Controle de la Couleur par curseur RVB
Posté : mer. 29 juin 2016 12:25
Bonjour,
Je me suis essayé au développement d'une interface changeant de couleur en fonction du déplacement de curseur gérant les couleurs RVB, c'est minimaliste mais fonctionnel. Je me suis inspiré comme base de départ de l'exemple de la fonction GUICtrlCreateSlider. Le code est commenté pour plus de lisibilité
[codeautoit]#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
;-------------------------------------------------------------------------------------------------
;Cet exemple permet de changer la couleur de fond d'une GUI a l'aide de curseurs RVB
;-------------------------------------------------------------------------------------------------
Example()
Func Example()
$gui=GUICreate("slider", 250, 150, 100, 200); création de l'interface
$couleur_gui="0x00E0FFFF" ; valeur par defaut de la couleur de l'interface
GUISetBkColor($couleur_gui) ; donne la couleur a l'interface
Local $idSlidercolor1 = GUICtrlCreateSlider(10, 10, 200, 20) ; création des curseurs de valeurs
Local $idSlidercolor2 = GUICtrlCreateSlider(10, 60, 200, 20)
Local $idSlidercolor3 = GUICtrlCreateSlider(10, 110, 200, 20)
GUICtrlCreateLabel("R",220,10) ; quelques labels pour les couleurs de base
GUICtrlCreateLabel("V",220,60)
GUICtrlCreateLabel("B",220,110)
GUICtrlSetLimit($idSlidercolor1, 15, 0) ; valeur max pour les curseurs
GUICtrlSetLimit($idSlidercolor2, 15, 0)
GUICtrlSetLimit($idSlidercolor3, 15, 0)
GUISetState(@SW_SHOW) ; affichage de la fenêtre
GUICtrlSetData($idSlidercolor1, 0) ; Position du curseur au départ
GUICtrlSetData($idSlidercolor2, 0)
GUICtrlSetData($idSlidercolor3, 0)
Local $idMsg
Do ; ; Boucle tant que l'utilisateur ne quitte pas
$idMsg = GUIGetMsg() ; lecture des messages renvoyés par la gui
switch $idMsg
case $idSlidercolor1 ; si le curseur 1 est touché
$color1=GUICtrlRead($idSlidercolor1) ; on lis les valeurs des trois curseurs
$color2=GUICtrlRead($idSlidercolor2)
$color3=GUICtrlRead($idSlidercolor3)
$couleur_gui= _getcolor(_transhexa($color1),_transhexa($color2),_transhexa($color3)); transformation des valeurs curseur en hexa
guictrlsetdata($gui,GUISetBkColor($couleur_gui)); et modification de la couleur de la gui
case $idSlidercolor2
$color1=GUICtrlRead($idSlidercolor1)
$color2=GUICtrlRead($idSlidercolor2)
$color3=GUICtrlRead($idSlidercolor3)
$couleur_gui= _getcolor(_transhexa($color1),_transhexa($color2),_transhexa($color3))
guictrlsetdata($gui,GUISetBkColor($couleur_gui))
case $idSlidercolor3
$color1=GUICtrlRead($idSlidercolor1)
$color2=GUICtrlRead($idSlidercolor2)
$color3=GUICtrlRead($idSlidercolor3)
$couleur_gui= _getcolor(_transhexa($color1),_transhexa($color2),_transhexa($color3))
guictrlsetdata($gui,GUISetBkColor($couleur_gui))
EndSwitch
Until $idMsg = $GUI_EVENT_CLOSE
EndFunc
func _transhexa($n) ; fonction de transdormation des valeurs decimale en hexa
if $n=0 then return "00"
if $n=1 then return "11"
if $n=2 then return "22"
if $n=3 Then return "33"
if $n=4 then return "44"
if $n=5 then return "55"
if $n=6 then return "66"
if $n=7 then return "77"
if $n=8 then return "88"
if $n=9 then return "99"
if $n=10 then return "AA"
if $n=11 then return "BB"
if $n=12 then return "CC"
if $n=13 then return "DD"
if $n=14 then return "EE"
if $n=15 then return "FF"
EndFunc
func _getcolor($color1,$color2,$color3) ; fonction de concatenation des valeurs pour obtenir un code couleur hexa
return "0x" & $color1 & $color2 & $color3
EndFunc[/codeautoit]
En esperant que ça aide quelqu'un un jour
Je me suis essayé au développement d'une interface changeant de couleur en fonction du déplacement de curseur gérant les couleurs RVB, c'est minimaliste mais fonctionnel. Je me suis inspiré comme base de départ de l'exemple de la fonction GUICtrlCreateSlider. Le code est commenté pour plus de lisibilité
[codeautoit]#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
;-------------------------------------------------------------------------------------------------
;Cet exemple permet de changer la couleur de fond d'une GUI a l'aide de curseurs RVB
;-------------------------------------------------------------------------------------------------
Example()
Func Example()
$gui=GUICreate("slider", 250, 150, 100, 200); création de l'interface
$couleur_gui="0x00E0FFFF" ; valeur par defaut de la couleur de l'interface
GUISetBkColor($couleur_gui) ; donne la couleur a l'interface
Local $idSlidercolor1 = GUICtrlCreateSlider(10, 10, 200, 20) ; création des curseurs de valeurs
Local $idSlidercolor2 = GUICtrlCreateSlider(10, 60, 200, 20)
Local $idSlidercolor3 = GUICtrlCreateSlider(10, 110, 200, 20)
GUICtrlCreateLabel("R",220,10) ; quelques labels pour les couleurs de base
GUICtrlCreateLabel("V",220,60)
GUICtrlCreateLabel("B",220,110)
GUICtrlSetLimit($idSlidercolor1, 15, 0) ; valeur max pour les curseurs
GUICtrlSetLimit($idSlidercolor2, 15, 0)
GUICtrlSetLimit($idSlidercolor3, 15, 0)
GUISetState(@SW_SHOW) ; affichage de la fenêtre
GUICtrlSetData($idSlidercolor1, 0) ; Position du curseur au départ
GUICtrlSetData($idSlidercolor2, 0)
GUICtrlSetData($idSlidercolor3, 0)
Local $idMsg
Do ; ; Boucle tant que l'utilisateur ne quitte pas
$idMsg = GUIGetMsg() ; lecture des messages renvoyés par la gui
switch $idMsg
case $idSlidercolor1 ; si le curseur 1 est touché
$color1=GUICtrlRead($idSlidercolor1) ; on lis les valeurs des trois curseurs
$color2=GUICtrlRead($idSlidercolor2)
$color3=GUICtrlRead($idSlidercolor3)
$couleur_gui= _getcolor(_transhexa($color1),_transhexa($color2),_transhexa($color3)); transformation des valeurs curseur en hexa
guictrlsetdata($gui,GUISetBkColor($couleur_gui)); et modification de la couleur de la gui
case $idSlidercolor2
$color1=GUICtrlRead($idSlidercolor1)
$color2=GUICtrlRead($idSlidercolor2)
$color3=GUICtrlRead($idSlidercolor3)
$couleur_gui= _getcolor(_transhexa($color1),_transhexa($color2),_transhexa($color3))
guictrlsetdata($gui,GUISetBkColor($couleur_gui))
case $idSlidercolor3
$color1=GUICtrlRead($idSlidercolor1)
$color2=GUICtrlRead($idSlidercolor2)
$color3=GUICtrlRead($idSlidercolor3)
$couleur_gui= _getcolor(_transhexa($color1),_transhexa($color2),_transhexa($color3))
guictrlsetdata($gui,GUISetBkColor($couleur_gui))
EndSwitch
Until $idMsg = $GUI_EVENT_CLOSE
EndFunc
func _transhexa($n) ; fonction de transdormation des valeurs decimale en hexa
if $n=0 then return "00"
if $n=1 then return "11"
if $n=2 then return "22"
if $n=3 Then return "33"
if $n=4 then return "44"
if $n=5 then return "55"
if $n=6 then return "66"
if $n=7 then return "77"
if $n=8 then return "88"
if $n=9 then return "99"
if $n=10 then return "AA"
if $n=11 then return "BB"
if $n=12 then return "CC"
if $n=13 then return "DD"
if $n=14 then return "EE"
if $n=15 then return "FF"
EndFunc
func _getcolor($color1,$color2,$color3) ; fonction de concatenation des valeurs pour obtenir un code couleur hexa
return "0x" & $color1 & $color2 & $color3
EndFunc[/codeautoit]
En esperant que ça aide quelqu'un un jour