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
			
			
									
									
						Controle de la Couleur par curseur RVB
					Règles du forum
			
	- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- 
				marcgforce
- Niveau 3 
- Messages : 47
- Enregistré le : lun. 07 mars 2016 07:20
- Status : Hors ligne
- orax
- Modérateur 
- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: Controle de la Couleur par curseur RVB
Bienvenue sur le forum et merci pour cet exemple.  
 
Si je peux me permettre de faire quelques remarques sur le code, il pourrait être simplifié.
Les fonctions _getcolor et _transhexa pourraient être remplacées par
Par contre, pour faire ça, il faudra limiter la valeur max à 255 ou 0xFF (au lieu de 15). En plus, ça permettra plus de précision dans le choix de la couleur.
[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 = "0xE0FFFF" ; 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, 0xFF, 0) ; valeur max pour les curseurs (0xFF = 255)
GUICtrlSetLimit($idSlidercolor2, 0xFF, 0)
GUICtrlSetLimit($idSlidercolor3, 0xFF, 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, $idSlidercolor2, $idSlidercolor3 ; si un curseur est touché
$color1 = GUICtrlRead($idSlidercolor1) ; on lis les valeurs des trois curseurs
$color2 = GUICtrlRead($idSlidercolor2)
$color3 = GUICtrlRead($idSlidercolor3)
$couleur_gui = StringFormat("0x%02X%02X%02X", $color1, $color2, $color3) ; %02X = nombre hexa sur 2 chiffres (5 => 05)
ConsoleWrite($couleur_gui & @CRLF)
GUICtrlSetData($gui, GUISetBkColor($couleur_gui)); et modification de la couleur de la gui
EndSwitch
Until $idMsg = $GUI_EVENT_CLOSE
EndFunc ;==>Example[/codeautoit]
			
			
									
									 
 Si je peux me permettre de faire quelques remarques sur le code, il pourrait être simplifié.
Les fonctions _getcolor et _transhexa pourraient être remplacées par
StringFormat("0x%02X%02X%02X", $color1, $color2, $color3).%02 va convertir le nombre décimal en hexadécimal, et un 0 sera ajouté au début si nécessaire (pour que le nombre occupe 2 chiffres).Par contre, pour faire ça, il faudra limiter la valeur max à 255 ou 0xFF (au lieu de 15). En plus, ça permettra plus de précision dans le choix de la couleur.
[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 = "0xE0FFFF" ; 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, 0xFF, 0) ; valeur max pour les curseurs (0xFF = 255)
GUICtrlSetLimit($idSlidercolor2, 0xFF, 0)
GUICtrlSetLimit($idSlidercolor3, 0xFF, 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, $idSlidercolor2, $idSlidercolor3 ; si un curseur est touché
$color1 = GUICtrlRead($idSlidercolor1) ; on lis les valeurs des trois curseurs
$color2 = GUICtrlRead($idSlidercolor2)
$color3 = GUICtrlRead($idSlidercolor3)
$couleur_gui = StringFormat("0x%02X%02X%02X", $color1, $color2, $color3) ; %02X = nombre hexa sur 2 chiffres (5 => 05)
ConsoleWrite($couleur_gui & @CRLF)
GUICtrlSetData($gui, GUISetBkColor($couleur_gui)); et modification de la couleur de la gui
EndSwitch
Until $idMsg = $GUI_EVENT_CLOSE
EndFunc ;==>Example[/codeautoit]
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
						- 
				marcgforce
- Niveau 3 
- Messages : 47
- Enregistré le : lun. 07 mars 2016 07:20
- Status : Hors ligne
Re: Controle de la Couleur par curseur RVB
Super remarque et bonne adaptation du code !... merci...
			
			
									
									
						
