Page 1 sur 1

[T] Code des couleurs (très pratique pour les développeurs)

Posté : jeu. 03 janv. 2008 21:31
par Tlem
Message transféré de l'ancien forum.
Auteur : hellboy_21
Date : 23/11/2006


Citation :

Voici un petit utilitaire qui vous permettra de retrouver le code hexadécimal d'une couleur. Pour ce faire, 3 fonctions vous seront données : soit en faisant varier les couleurs rouge, vert, bleu ; soit en choisissant une couleur prédéfinie dans la palette ; ou encore en passant votre curseur sur une couleur affichée sur votre écran.

Code : Tout sélectionner

#cs ----------------------------------------------------------------------------
    
    AutoIt Version: 3.2.12.0
    
#ce ----------------------------------------------------------------------------

#include <WindowsConstants.au3>
#include <SliderConstants.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <GUIconstants.au3>

Dim $Palette1 = @TempDir & "\palette1.jpg"
Dim $Palette2 = @TempDir & "\palette2.jpg"
FileInstall("palette1.jpg", @TempDir & "\palette1.jpg", 1)
FileInstall("palette2.jpg", @TempDir & "\palette2.jpg", 1)

GUICreate("Codes des couleurs", 630, 325, -1, -1, $WS_SYSMENU)
WinSetOnTop("Codes des couleurs", "", 1)
Opt("GUIOnEventMode", 1)
$lblCodeRGB = GUICtrlCreateLabel("Code RGB : ", 10, 10, 60)
$lblRouge = GUICtrlCreateLabel("Rouge : ", 30, 30, 40)
GUICtrlSetColor($lblRouge, 0xff0000)
$txtRouge = GUICtrlCreateLabel("0", 75, 30, 30)
$lblVert = GUICtrlCreateLabel("Vert : ", 30, 50, 40)
GUICtrlSetColor($lblVert, 0x00ff00)
$txtVert = GUICtrlCreateLabel("0", 75, 50, 30)
$lblBleu = GUICtrlCreateLabel("Bleu : ", 30, 70, 40)
GUICtrlSetColor($lblBleu, 0x0000ff)
$txtBleu = GUICtrlCreateLabel("0", 75, 70, 30)
$lblHexa = GUICtrlCreateLabel("Code Hexadécimal : ", 10, 97, 100)
;$lblCodeHexa = GUICtrlCreateInput("000000",110,97,50,-1,$ES_READONLY)
$lblCodeHexa = GUICtrlCreateLabel("000000", 110, 97, 50)
$lblCouleur = GUICtrlCreateLabel("", 160, 10, 130, 100)
GUICtrlSetBkColor($lblCouleur, 0x000000)
$lblSliderRouge = GUICtrlCreateLabel("Rouge : ", 10, 135, 40)
GUICtrlSetColor($lblSliderRouge, 0xff0000)
$SliderRouge = GUICtrlCreateSlider(50, 130, 250, 30, $TBS_NOTICKS)
GUICtrlSetLimit($SliderRouge, 255, 0)
$lblSliderVert = GUICtrlCreateLabel("Vert : ", 10, 165, 40)
GUICtrlSetColor($lblSliderVert, 0x00ff00)
$SliderVert = GUICtrlCreateSlider(50, 160, 250, 30, $TBS_NOTICKS)
GUICtrlSetLimit($SliderVert, 255, 0)
$lblSliderBleu = GUICtrlCreateLabel("Bleu : ", 10, 195, 40)
GUICtrlSetColor($lblSliderBleu, 0x0000ff)
$SliderBleu = GUICtrlCreateSlider(50, 190, 250, 30, $TBS_NOTICKS)
GUICtrlSetLimit($SliderBleu, 255, 0)
$cmdStart = GUICtrlCreateButton("Lancer couleur curseur", 10, 230, 135, 25)
GUICtrlSetOnEvent($cmdStart, "start")
$cmdStop = GUICtrlCreateButton("Stopper couleur curseur", 155, 230, 135, 25)
GUICtrlSetOnEvent($cmdStop, "stop")
$cmdChanger = GUICtrlCreateButton("Changer de palette", 10, 260, 135, 25)
GUICtrlSetOnEvent($cmdChanger, "changer")
$cmdCopier = GUICtrlCreateButton("Copier le code hexa", 155, 260, 135, 25)
GUICtrlSetOnEvent($cmdCopier, "copier")
$palette = $Palette1
$img = GUICtrlCreatePic($palette, 305, 10, 310, 275)
GUICtrlSetOnEvent($img, "test")
HotKeySet("+!d", "start")
HotKeySet("+!s", "stop")
$fin = 1
GUISetOnEvent($GUI_EVENT_CLOSE, "quitter")
GUISetState()
While 1
    Sleep(500)

    $tabFenetre = WinGetPos("Codes des couleurs")
    $tabCurseur = GUIGetCursorInfo()
    If Not @error Then
        $x = $tabCurseur[0]
        $y = $tabCurseur[1]
        If $y >= 230 And $y <= 255 Then
            If $x >= 10 And $x <= 145 Then
                ToolTip("Lancer : Shift+Alt+D", $x + 12 + $tabFenetre[0], $y + 50 + $tabFenetre[1])
            Else
                If $x >= 155 And $x <= 290 Then
                    ToolTip("Stopper : Shift+Alt+S", $x + 12 + $tabFenetre[0], $y + 50 + $tabFenetre[1])
                Else
                    ToolTip("")
                EndIf
            EndIf
        Else
            ToolTip("")
        EndIf
        If $y >= 10 And $y <= 285 Then
            If $x >= 305 And $x <= 615 Then
                ToolTip("Cliquez sur un couleur", $x + 12 + $tabFenetre[0], $y + 50 + $tabFenetre[1])
            EndIf
        EndIf

        If $fin = 0 Then
            $pos = MouseGetPos()
            $couleurSouris = PixelGetColor($pos[0], $pos[1])
            GUICtrlSetBkColor($lblCouleur, "0x" & Hex($couleurSouris, 6))
            GUICtrlSetData($lblCodeHexa, Hex($couleurSouris, 6))
            GUICtrlSetData($txtRouge, Dec(StringLeft(Hex($couleurSouris, 6), 2)))
            GUICtrlSetData($txtVert, Dec(StringMid(Hex($couleurSouris, 6), 3, 2)))
            GUICtrlSetData($txtBleu, Dec(StringRight(Hex($couleurSouris, 6), 2)))
            GUICtrlSetData($SliderRouge, GUICtrlRead($txtRouge))
            GUICtrlSetData($SliderVert, GUICtrlRead($txtVert))
            GUICtrlSetData($SliderBleu, GUICtrlRead($txtBleu))
        Else
            $rouge = Hex(GUICtrlRead($SliderRouge), 2)
            GUICtrlSetData($txtRouge, GUICtrlRead($SliderRouge))
            $vert = Hex(GUICtrlRead($SliderVert), 2)
            GUICtrlSetData($txtVert, GUICtrlRead($SliderVert))
            $bleu = Hex(GUICtrlRead($SliderBleu), 2)
            GUICtrlSetData($txtBleu, GUICtrlRead($SliderBleu))
            $CodeCouleurHexa = $rouge & $vert & $bleu
            GUICtrlSetBkColor($lblCouleur, "0x" & $CodeCouleurHexa)
            GUICtrlSetData($lblCodeHexa, $CodeCouleurHexa)
        EndIf
    EndIf
WEnd
Func test()
    If $y >= 10 And $y <= 285 Then
        If $x >= 305 And $x <= 615 Then
            $couleurSouris = PixelGetColor($x + 3 + $tabFenetre[0], $y + 30 + $tabFenetre[1])
            GUICtrlSetBkColor($lblCouleur, "0x" & Hex($couleurSouris, 6))
            GUICtrlSetData($lblCodeHexa, Hex($couleurSouris, 6))
            GUICtrlSetData($txtRouge, Dec(StringLeft(Hex($couleurSouris, 6), 2)))
            GUICtrlSetData($txtVert, Dec(StringMid(Hex($couleurSouris, 6), 3, 2)))
            GUICtrlSetData($txtBleu, Dec(StringRight(Hex($couleurSouris, 6), 2)))
            GUICtrlSetData($SliderRouge, GUICtrlRead($txtRouge))
            GUICtrlSetData($SliderVert, GUICtrlRead($txtVert))
            GUICtrlSetData($SliderBleu, GUICtrlRead($txtBleu))
        EndIf
    EndIf
EndFunc   ;==>test
Func start()
    $fin = 0
    $tableau = GUIGetCursorInfo()
    $x = $tableau[0]
    $y = $tableau[1]
    ToolTip("Shift+Alt+d", $x, $y)
EndFunc   ;==>start
Func stop()
    $fin = 1
EndFunc   ;==>stop
Func changer()
    If $palette = $Palette1 Then
        $palette = $Palette2
        GUICtrlSetImage($img, $palette)
    Else
        If $palette = $Palette2 Then
            $palette = $Palette1
            GUICtrlSetImage($img, $palette)
        EndIf
    EndIf
EndFunc   ;==>changer
Func copier()
    ClipPut(GUICtrlRead($lblCodeHexa))
EndFunc   ;==>copier
Func quitter()
    Exit
EndFunc   ;==>quitter

Re: [T] Code des couleurs (très pratique pour les développeur)

Posté : mer. 30 avr. 2008 11:12
par olaiv
Très pratique c'est exactement ce dont j'avais besoin merci :mrgreen:

Re: [T] Code des couleurs (très pratique pour les développeur)

Posté : mer. 21 mai 2008 16:41
par cortx
Possible de remettre à jours ?
Quant je clique sur un couleur de l'écran j'ai un message d'erreur.
J'ai juste copié/collé le code et executer.
impossible de télécharger le lien de départ, il n'existe plus.
merci

Re: [T] Code des couleurs (très pratique pour les développeur)

Posté : mer. 21 mai 2008 21:13
par Tlem
Le lien et le script ont été mis à jour.

Re: [T] Code des couleurs (très pratique pour les développeur)

Posté : jeu. 22 mai 2008 02:08
par cortx
Bonjour.
Pour les perfectionnistes; ne pas cliquer en dehors de la fenêtre du programme sinon il plante.
Mis à part celà, c'est une pure merveille ce logiciel, merci beaucoup.

Re: [T] Code des couleurs (très pratique pour les développeur)

Posté : ven. 20 juin 2008 21:59
par KoRnBoy82
Bonjour,

Lorsque nous compilons le script suivant en exécutable, les palettes n'affichent plus dedans le programme. Alors je conseille ceci :

Créez-vous un dossier nommé "pal" à la racine de votre "c:\" et copiez les deux fichiers image dedans soit "palette.jpg" et "palette2.jpg".

Ensuite, dans le script, tout de suite après les includes, ajoutez les lignes suivantes :

Code : Tout sélectionner

$ColorPath1 = @TempDir & "\palette1.jpg"
$ColorPath2 = @TempDir & "\palette2.jpg"
FileInstall("c:\pal\palette1.jpg", @TempDir & "\palette1.jpg", 1)
FileInstall("c:\pal\palette2.jpg", @TempDir & "\palette2.jpg", 1)
 
Ceci aura pour effet que, lors de la compilation, les fichiers de palettes seront inclus à même l'exécutable (de là la création d'un dossier pal que vous pouvez ensuite supprimer) et chaque fois que le programme ouvre, il les copie dans le dossier temporaire de Windows afin d'y avoir accès.

Il faut pour que ceci fonctionne bien que chaque endroit où c'est indiqué palette1.jpg vous changiez ça pour $ColorPath1 et pour palette2.jpg soit changé pour $ColorPath2.

Je vous copie mon code final :
► Afficher le textecode modifié
L'application plante toujours quand on clique à l'exérieur de celle-ci mais au moins les palettes affichent bien une fois compilé.

NOTE : Quand vous utilisez la commande FileInstall, ça ne fonctionne pas si les fichiers que vous voulez inclure dans votre .exe sont directement à la racine d'un de vos lecteurs. Il faut les mettre absolument dans un dossier et indiquer le chemin complet du dossier.

Re: [T] Code des couleurs (très pratique pour les développeur)

Posté : ven. 20 juin 2008 22:42
par Tlem
Oui effectivement, une petite ré-actualisation du code s'imposait.
Le code principal à été modifier pour prendre en compte les palettes et les compiler directement et j'en ai aussi profiter pour éliminer l'erreur lors du clic en dehors du script. ;)
Le fichier joint est modifié, et il fonctionne tel quel avec AutoIt 3.2.12.1.

Re: [T] Code des couleurs (très pratique pour les développeur)

Posté : mar. 19 août 2008 08:54
par DimVar
ENORME merci !

Si j'avais eu ce programme à mes debuts sur PHP, j'aurais pas passé mille ans à trouver mes couleurs hexa....

Géant.... (et jolie interface !)

Re: [T] Code des couleurs (très pratique pour les développeurs)

Posté : lun. 03 nov. 2008 18:16
par Jikoo
Bonjour,

Voici un autre outil pour convertir les couleurs Hex<>RGB<>HSL

Image

Le programme est multilingue.

C'est ici, sur le forum AutoIt.fr

Re: [T] Code des couleurs (très pratique pour les développeurs)

Posté : mer. 05 nov. 2008 23:30
par Flop
j'utilise la lib GDIplus, comment faire pour trouver le code de la couleur ca ressemble à ca :

0xA2FFFFFF

merci d'avance.

Re: [T] Code des couleurs (très pratique pour les développeurs)

Posté : jeu. 06 nov. 2008 05:50
par Jikoo
Flop a écrit :j'utilise la lib GDIplus, comment faire pour trouver le code de la couleur ca ressemble à ca :

0xA2FFFFFF

merci d'avance.
Bonjour Flop,

Je ne comprend pas trop ta question. :?

Tu cherches quoi comme code de couleur : hexadécimal, décimal, RGB, HSL... ???

0xA2FFFFFF n'est pas une couleur. C'est un code hexadécimal pour autre chose.
Si c'est une couleur, je pense que c'est ça que tu as voulu écrire : 0xA2FFFF
Correspondance en RGB : 162,255,255

Utilise le convertisseur juste au dessus de ton message pour faire ça.

Re: [T] Code des couleurs (très pratique pour les développeurs)

Posté : jeu. 06 nov. 2008 19:06
par tolf
Jikoo a écrit :0xA2FFFFFF n'est pas une couleur. C'est un code hexadécimal pour autre chose.
C'est une couleur en ARGB :
transparence alpha = A2
rouge = FF
vert = FF
bleu = FF

Re: [T] Code des couleurs (très pratique pour les développeurs)

Posté : ven. 07 nov. 2008 00:19
par Jikoo
Merci Tolf pour m'avoir fait découvrir ce type de couleur en hexadécimal. :D

Re: [T] Code des couleurs (très pratique pour les développeurs)

Posté : ven. 07 nov. 2008 08:48
par Flop
Merci pour la réponse, c'est maintenant ok