TrackbarGadget Frage

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

TrackbarGadget Frage

Beitrag von udg »

Hallo,
seit langem mache ich mal wieder ein kleines Programmchen.

Nun sitz ich vor einem Problem wo ich nicht recht weiß wie ich das löse.

Ich habe eine Textur für ein Objekt. Dieser Textur vergebe ich manuell Farbwerte in diesem Format:

Code: Alles auswählen

#Texture,0,RGB(66, 100, 50),RGB(166, 100, 50),RGB(213, 126, 50),RGB(60, 70, 150))
Quadratische Textur = 4 Ecken, 4 RGB Farbwerte

Nun möchte ich live die Farbwerte mit 4 Trackbar ändern.

das sehe in etwa so aus:

Code: Alles auswählen

#Texture,0,GetGadgetState(#TrackBar_RGB_1),GetGadgetState(#TrackBar_RGB_2),GetGadgetState(#TrackBar_RGB_3),GetGadgetState(#TrackBar_RGB_4)
Nun das ABER:

ein Trackbar ändert nicht die 3 RGB Werte ---> RGB(166, 100, 50) sondern schmeißt hier nur eine Zahl von 0-255 rein Also nur 1 Zahl statt 3 Zahlen.
Erstellt ist der Trackbar ganz normal:

Code: Alles auswählen

TrackBarGadget(#TrackBar_RGB_1, 5, 50, 30, 110, 0, 255, #PB_TrackBar_Vertical)
Bild

Bild

So sollte es eigtl aussehen. Farbverläufe in der Textur (per Hand im Code festgelegt):

Bild

Hat dazu jemand einen Lösungsweg wie ich mit einem Trackbar die 3 Zahlenwerte RGB(166, 100, 50) variabel äbdern kann?


Grüße Euch
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: TrackbarGadget Frage

Beitrag von Mijikai »

Evtl. so aber viel Kontrolle gibts das nicht.

Code: Alles auswählen

EnableExplicit

Procedure.i Main()
  If OpenWindow(0,0,0,320,400,#Null$,#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
    If CanvasGadget(1,0,0,320,320) And TrackBarGadget(2,10,340,300,30,0,$FFFFFF)
      Repeat
        Select WaitWindowEvent()
          Case #PB_Event_Gadget
            If EventGadget() = 2
              If StartDrawing(CanvasOutput(1))
                Box(0,0,320,320,GetGadgetState(2))
                StopDrawing()
              EndIf
            EndIf
          Case #PB_Event_CloseWindow
            Break
        EndSelect
      ForEver
    EndIf
    CloseWindow(0)  
  EndIf  
  ProcedureReturn #Null
EndProcedure

Main()

End
ST4242
Beiträge: 42
Registriert: 29.10.2011 16:54

Re: TrackbarGadget Frage

Beitrag von ST4242 »

Hallo,
die Funktion RGB gibt einen Wert zwischen 0 - 16.581.375 (255*255*255) zurück.
=> die Slider über diesen gesamten Wertebereicherstrecken lassen
oder
für jede Farbe 3 Slider machen für Rot Grün und Blau von 0-255.

Grüße
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: TrackbarGadget Frage

Beitrag von udg »

@Mijikai
Deine Version ist laut Kontrolle ausreichend und vielen Dank für den Lösungsvorschlag. Geht :allright:

@ST4242
Deine Version funktioniert ebenfalls und sogar genauer als die von Mijikai

Ich habe mir aus beiden Tipps etwas gebaut und das Ergebnis ist so wie es gewünscht ist. Vielen Dank

Bild

Edit:

gibt es eine Möglichkeit mit dem Mausrad den Trackbar Slider in Einerschritten zu erhöhen? Standard scheint es in 5er Schritten zu springen?
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Antworten