Master-Slider ?

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

Master-Slider ?

01 Dec 2017, 15:15

Wie erstelle ich ein Master-slider (0-255), der beim Verschieben 3 weitere slider im Verbund positiv oder negativ jeweils um den Wert 1 verschiebt. Die 3 slider können jeweils unterschiedliche Werte beinhalten (0-255) und sobald einer der 3 slider den Maximal- oder Minimalwert erreicht, stoppt ebenfalls der Master-slider. Es geht bei meinem Projekt um eine RGB-Werte Einstellung mit Dezimalcodes. :?:
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Master-Slider ?

01 Dec 2017, 16:05

Ad-hoc ...
a) ermitteln der aktuellen werte der solo-slider
b) aufadd-/subtrahieren der bewegungswerte des masters zum jeweiligen solowert
c) ... und da verließen sie ihn bereits :lol:
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Master-Slider ?

02 Dec 2017, 07:58

Moin,

ich wollte eigentlich keinen Code liefern, mir wurde dann aber die verbale Beschreibung zu umständlich. Deshalb folgender schlichter Lösungsansatz:

Code: Select all

#NoEnv
SetBatchLines, -1

RangeMin := 0
RangeMax := 255
SelMin := RangeMin
SelMax := RangeMax

Gui, Margin, 20, 20
Gui, Add, Slider, w200 vMasterSL AltSubmit Range%RangeMin%-%RangeMax% ToolTip, 0
Gui, Add, Slider, w200 vRSL gRGB AltSubmit Range%RangeMin%-%RangeMax% ToolTip, 9
Gui, Add, Slider, xm y+5 w200 vGSL gRGB AltSubmit Range%RangeMin%-%RangeMax% ToolTip, 8
Gui, Add, Slider, xm y+5 w200 vBSL gRGB AltSubmit Range%RangeMin%-%RangeMax% ToolTip, 9
Gosub, RGB ; MasterSL auf R|G|B-Maximun setzen
GuiControl, +gMaster, MasterSL
Gui, Show, , SliderTest
Return

GuiCLose:
ExitApp

RGB:
CheckRGB:
Gui, Submit, NoHide
Max := (RSL > GSL ? (BSL > RSL ? BSL : RSL) : (BSL > GSL ? BSL : GSL))
If !(RSL && GSL && BSL)
   SelMin := Max
Else
   SelMin := RangeMin
If (A_ThisLabel = "CheckRGB")
   Return
GuiControl, , MasterSL, %Max%
PrevMaster := Max
Return

Master:
Gosub, CheckRGB
If (MasterSL < SelMin) {
   GuiControl, , MasterSL, %SelMin%
   PrevMaster := SelMin
   Return
}
If (Diff := MasterSL - PrevMaster) {
   GuiControl, , RSL, +%Diff%
   GuiControl, , GSL, +%Diff%
   GuiControl, , BSL, +%Diff%
}
PrevMaster := MasterSL
Return
User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

Re: Master-Slider ?

02 Dec 2017, 09:55

just me... du :angel: hast den Nagel auf den Kopf getroffen!
Genauso habe ich es mir vorgestellt, jetzt werde ich mein Projekt bzgl. RGB-Werteverschiebung > Färbung und Sättigung fortsetzen können.
DANKE... :wave:
User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

Re: Master-Slider ?

02 Dec 2017, 20:36

Oops... :shock: mir ist aufgefallen, dass sich alle RGB-Slider auf 0 stellen, wenn man beim fokussierten Master-Slider die Ende-Taste drückt, ähnliches passiert auch gelegentlich bei Pos1, Pagedown und up. Lediglich die Nutzung mit wheelup/down und cursorup/down funktionieren sauber.
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Master-Slider ?

03 Dec 2017, 05:13

Ja, dann war der Lösungsansatz wohl etwas zu schlicht. ;)
Probier mal den:

Code: Select all

#NoEnv
SetBatchLines, -1
; Wertebereich für Slider ----------------------------------------------------------------------------------------------
RangeMin := 0
RangeMax := 255
; Startwerte für R|G|B -------------------------------------------------------------------------------------------------
RSL := 9
GSL := 8
BSL := 12
; ----------------------------------------------------------------------------------------------------------------------
Gui, Margin, 20, 20
Gui, Add, Slider, xm w200 vMSL gMaster AltSubmit Range%RangeMin%-%RangeMax%
Gui, Add, Text, x+5 yp w50 hp Center 0x0200 vMTX
Gui, Add, Slider, xm w200 vRSL gRGB AltSubmit Range%RangeMin%-%RangeMax%, %RSL%
Gui, Add, Text, x+5 yp w50 hp Center 0x0200 vRTX, %RSL%
Gui, Add, Slider, xm y+5 w200 vGSL gRGB AltSubmit Range%RangeMin%-%RangeMax%, %GSL%
Gui, Add, Text, x+5 yp w50 hp Center 0x0200 vGTX, %GSL%
Gui, Add, Slider, xm y+5 w200 vBSL gRGB AltSubmit Range%RangeMin%-%RangeMax%, %BSL%
Gui, Add, Text, x+5 yp w50 hp Center 0x0200 vBTX, %BSL%
; MSL auf R|G|B-Maximun setzen
Gosub, MinMax
GuiControl, , MSL, %Max%
GuiControl, , MTX, %Max%
PrevM := MAx
Gui, Show, , SliderTest
Return
; ----------------------------------------------------------------------------------------------------------------------
GuiCLose:
ExitApp
; ----------------------------------------------------------------------------------------------------------------------
RGB:
GoSub, MinMax
GuiControl, , % SubStr(A_GuiControl, 1, 1) . "TX", % %A_GuiControl%
If (Max <> PrevM) {
   GuiControl, , MSL, %Max%
   GuiControl, , MTX, %Max%
   PrevM := Max
}
Return
; ----------------------------------------------------------------------------------------------------------------------
Master:
Gosub, MinMax
If (Diff := MSL - PrevM) {
   If (Min = 0) && (Diff < 0) {
      GuiControl, , MSL, %PrevM%
   }
   Else {
      If (Diff < -Min)
         Diff := -Min
      GuiControl, , RSL, % (RSL += Diff)
      GuiControl, , RTX, %RSL%
      GuiControl, , GSL, % (GSL += Diff)
      GuiControl, , GTX, %GSL%
      GuiControl, , BSL, % (BSL += Diff)
      GuiControl, , BTX, %BSL%
      GuiControl, , MSL, % (Max += Diff)
      GuiControl, , MTX, %Max%
      PrevM := Max
   }
}
Return
; ----------------------------------------------------------------------------------------------------------------------
MinMax:
Gui, Submit, NoHide
Min := (RSL < GSL ? (BSL < RSL ? BSL : RSL) : (BSL < GSL ? BSL : GSL))
Max := (RSL > GSL ? (BSL > RSL ? BSL : RSL) : (BSL > GSL ? BSL : GSL))
Return
Edit: Code-Update am 03.12.2017 12:29
User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

Re: Master-Slider ?

03 Dec 2017, 12:30

:salute: yepp... einwandfrei, schankedön just me!

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 24 guests