Seite 1 von 1

TrackbarGadget Frage

Verfasst: 24.11.2020 21:13
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

Re: TrackbarGadget Frage

Verfasst: 24.11.2020 21:34
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

Re: TrackbarGadget Frage

Verfasst: 24.11.2020 21:47
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

Re: TrackbarGadget Frage

Verfasst: 24.11.2020 22:19
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?