Master-Slider ?
Moderator: jNizM
Master-Slider ?
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.
Re: Master-Slider ?
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
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
Re: Master-Slider ?
Moin,
ich wollte eigentlich keinen Code liefern, mir wurde dann aber die verbale Beschreibung zu umständlich. Deshalb folgender schlichter Lösungsansatz:
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
Re: Master-Slider ?
just me... du 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...
Genauso habe ich es mir vorgestellt, jetzt werde ich mein Projekt bzgl. RGB-Werteverschiebung > Färbung und Sättigung fortsetzen können.
DANKE...
Re: Master-Slider ?
Oops... 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.
Re: Master-Slider ?
Ja, dann war der Lösungsansatz wohl etwas zu schlicht.
Probier mal den:
Edit: Code-Update am 03.12.2017 12:29
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
Re: Master-Slider ?
yepp... einwandfrei, schankedön just me!
Who is online
Users browsing this forum: gero and 32 guests