Functions > GUI > GUICtrlUpdate >


GUICtrlSetGraphic

Dessine des formes dans un contrôle graphique.

GUICtrlSetGraphic ( controlID, type [, par1 [, ... par6]] )

Paramètres

controlID L'ID du contrôle tel que retourné par la fonction GUICtrlCreateGraphic().
type Type de tracé : point, ligne, Bézier, rectangle, ellipse, arc de cercle. (Voir Remarques)
par1...par6 Voir la Table des types graphiques ci-dessous.

Valeur de retour

Succès: Retourne 1.
Échec: Retourne 0.
-1 En cas de données non valides

Remarques

La position du point (x, y) est relative aux coordonnées GUICtrlCreateGraphic(). Il peut se trouver en dehors du contrôle graphique mais à l'intérieur de la fenêtre GUI.

Table des types graphiques

Type Paramètres Résultat
$GUI_GR_COLOR Color [, BkColor] Définit la couleur des prochains dessins. Lorsque BkColor est égale à $GUI_GR_NOBKCOLOR le dessin ne sera pas remplie. C'est la valeur par défaut. Pour Color la couleur de ligne par défaut est noir.
$GUI_GR_MOVE x,y Déplace le curseur graphique à une position sans laisser de trace.
$GUI_GR_DOT x,y Trace un point (petit carré autour du point), le prochain tracé démarrera de cette position.
$GUI_GR_PIXEL x,y Dessine un pixel (petite croix), le prochain tracé démarrera de cette position.
$GUI_GR_LINE x,y Trace une ligne de la position courante du curseur graphique à la position indiquée.
$GUI_GR_BEZIER x,y,x1,y1,x2,y2 Trace une courbe de Bézier avec 2 points de contrôle.
$GUI_GR_RECT x,y,w,h Trace un rectangle. Si w = h, ce sera un carré.
$GUI_GR_ELLIPSE x,y,w,h Trace une ellipse. Si w = h, ce sera un cercle.
$GUI_GR_PIE x,y,r,sa,wa Trace un secteur angulaire: rayon=r startAngle=sa sweepangle=wa. Les angles sont en degrés.
$GUI_GR_CLOSE   Pour fermer un tracé en cours, doit être ajouté à $GUI_GR_LINE ou $GUI_GR_BEZIER. Utilisé seul, il sera ignoré.
$GUI_GR_REFRESH   Pour forcer le rafraichissemenet après une mise à jour dynamique de graphiques.
$GUI_GR_HINT   Pour afficher le point de contrôle et le point de terminaison d'une courbe de Bézier ou d'une ligne.
$GUI_GR_PENSIZE n Définit la taille du crayon pour les prochains tracés. Elle doit être définie avant $GUI_GR_COLOR pour être prise en compte.
$GUI_GR_NOBKCOLOR   C'est une couleur de fond factice pour forcer un tracé à se fermer sans se remplir. Seulement pour les tracés de ligne.

En raison de contraintes de conception, les graphiques RECT, ELLIPSE et PIE sont dessinés en premier. Par exemple, une ligne sera toujours dessinée sur un RECT. Si l'ordre de dessin est important pour l'aspect du graphique, il est recommandé d'utiliser plusieurs contrôles graphiques au lieu d'utiliser un seul contrôle pour faire tout le dessin.

En relation

GUICtrlCreateGraphic

Exemple

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>

Global Const $g_MAXGr = 6
Global $g_aidGraphics[$g_MAXGr + 1] ; 0 et les entrées $g_MAXGr ne sont pas utilisés pour permettre GUICtrlDelete
Global $g_idDel, $g_hChild

Example()

Func Example()
    Local $idMsg, $iInc, $i

    GUICreate("My Main", -1, -1, 100, 100)
    Local $idDel1 = GUICtrlCreateButton("ReCreate", 50, 200, 50)
    GUISetState(@SW_SHOW)
    CreateChild()

    $i = 1
    $iInc = 1
    ;$i = 5 ; décommenter pour supprimer le démarrage à partir du dernier contrôle graphique défini
    ;$iInc = -1

    Do
        $idMsg = GUIGetMsg()
        If $idMsg = $idDel1 Then $i = Create($iInc)

        If $idMsg = $g_idDel Then
            GUICtrlDelete($g_aidGraphics[$i])
            $i = $i + $iInc
            If $i < 0 Or $i > $g_MAXGr Then Exit
        EndIf
    Until $idMsg = $GUI_EVENT_CLOSE
EndFunc   ;==>Example

Func Create($iInc)
    GUIDelete($g_hChild)
    CreateChild()
    If $iInc = -1 Then Return 5
    Return 1
EndFunc   ;==>Create

Func CreateChild()
    $g_hChild = GUICreate("My Draw")
    $g_idDel = GUICtrlCreateButton("Delete", 50, 165, 50)

    $g_aidGraphics[1] = GUICtrlCreateGraphic(20, 50, 100, 100)
    GUICtrlSetBkColor(-1, 0xffffff)
    GUICtrlSetColor(-1, 0)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff0000, 0xff0000)
    GUICtrlSetGraphic(-1, $GUI_GR_PIE, 50, 50, 40, 30, 270)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00ff00, 0xffffff)
    GUICtrlSetGraphic(-1, $GUI_GR_PIE, 58, 50, 40, -60, 90)

    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 100, 100, 50, 80)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00ff00, 0xc0c0ff)
    GUICtrlSetGraphic(-1, $GUI_GR_RECT, 350, 200, 50, 80)
    GUICtrlCreateLabel("label", 65, 100, 30)
    GUICtrlSetColor(-1, 0xff)

    $g_aidGraphics[2] = GUICtrlCreateGraphic(220, 10, 100, 100)

    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0, 0xff)
    GUICtrlSetGraphic(-1, $GUI_GR_PIE, 50, 50, 40, 30, 270)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00ff00, 0xffffff)
    GUICtrlSetGraphic(-1, $GUI_GR_PIE, 58, 50, 40, -60, 90)

    $g_aidGraphics[3] = GUICtrlCreateGraphic(220, 110, 100, 100)
    GUICtrlSetBkColor(-1, 0xf08080)
    GUICtrlSetColor(-1, 0xff)
    GUICtrlSetGraphic(-1, $GUI_GR_HINT, 1)

    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff00)
    GUICtrlSetGraphic(-1, $GUI_GR_RECT, 50, 50, 80, 80)

    $g_aidGraphics[4] = GUICtrlCreateGraphic(20, 200, 80, 80)
    GUICtrlSetBkColor(-1, 0xffffff)
    GUICtrlSetGraphic(-1, $GUI_GR_HINT, 1)

    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 10, 10)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 30, 40)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff00)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 70, 70)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff0000)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 10, 50)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xffff00)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 10, 10)

    $g_aidGraphics[5] = GUICtrlCreateGraphic(150, 10, 50, 50)
    GUICtrlSetBkColor(-1, 0xa0ffa0)
    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 20, 20) ;le point de départ
    ; il est préférable de tracer la ligne et après le point
    ; pour éviter de basculer la couleur à chaque dessin
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x0000ff)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, 30, 30)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 20, 40)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff0000)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, 25, 25)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 40, 40)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, 30, 40)

    $g_aidGraphics[6] = GUICtrlCreateGraphic(110, 260, 230, 130)
    GUICtrlSetColor(-1, 0) ; affiche une ligne de bordure noire
    GUICtrlSetBkColor(-1, 0xc0c0ff)
    GUICtrlSetGraphic(-1, $GUI_GR_HINT, 3) ; affiche les lignes du contrôle et les points d'extrémité

    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0, 0xff); remplir en bleu
    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 120, 20) ; le point de départ
    GUICtrlSetGraphic(-1, $GUI_GR_BEZIER, 120, 100, 200, 20, 200, 100)
    GUICtrlSetGraphic(-1, $GUI_GR_BEZIER + $GUI_GR_CLOSE, 100, 40, 40, 100, 40, 20)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 60, 30) ;le point de départ

    GUISetState(@SW_SHOW)
EndFunc   ;==>CreateChild