GdipSaveGraphics()



Syntaxe
Resultat.i = GdipSaveGraphics(*graphics, @state.i)
Paramètres
*graphics

[in] Pointeur sur un objet Graphics existant.

state.i

[out] *state recevra un pointeur sur un objet GraphicsState qui représente l'état du Graphics au moment de l'appel de la fonction.

Description

Cette fonction permet d'enregistrer l'état courant du graphique (transformation, région et qualité). Le paramètre *state retouné identifie l'état enregistré du graphique au moment de l'appel de la fonction.

La fonction GdipRestoreGraphics() permet de restaurer l'état du graphique représenté par le paramètre *state.

L'exemple utilise un graphique à partir du Hdc de la fenêtre. On applique au graphique une translation en x de 250 et y de 250. On sauvegarde l'état du graphique puis on réinitialise le graphique ce qui revient à n'avoir plus aucune translation pour le graphique. Un rectangle de 200 x 200 est dessiné et rempli en rouge à la position x = 0 et y = 0. On restaure le graphique avec la fonction GdipRestoreGraphics(). Par conséquent, on revient aux caractéristiques précédentes du graphique, soit la translation en x de 250 et y de 250. On dessine un rectangle de 100 x 100 rempli en bleu à la position x = 0 etr y = 0. Ce rectangle est réellement positionné en x = 250 et y = 250 du aux propriétés graphique restauré.

Note de Microsoft (adapté à la programmation PB) :

Lorsque vous appelez la fonction GdipSaveGraphics(), un bloc d'informations qui comporte l'état de l'objet Graphics est placé sur une pile et cette fonction retourne un objet GraphicsState qui identifie ce bloc d'informations. Lorsque vous passez l'objet d'identification à la fonction GdipRestoreGraphics(), le bloc d'informations est supprimé de la pile et est utilisé pour rétablir l'objet Graphics dans l'état dans lequel il se trouvait lors de l'appel à la fonction GdipSaveGraphics(). Notez que l'objet GraphicsState retourné par un appel donné de la fonction GdipSaveGraphics() ne peut être passé qu'une seule fois à la fonction GdipSaveGraphics().

 

Les appels de la fonction GdipSaveGraphics() peuvent être imbriqués ; en d'autres termes, vous pouvez appeler la fonction GdipSaveGraphics() à plusieurs reprises avant d'appeler la fonction GdipRestoreGraphics(). Chaque fois que vous appelez la fonction GdipSaveGraphics(), un bloc d'informations est placé sur la pile et vous recevez un objet GraphicsState pour ce bloc d'informations. Lorsque vous passez l'un de ces objets à la fonction GdipRestoreGraphics(), l'objet Graphics est remis dans l'état dans lequel il se trouvait au moment de l'appel à la fonction GdipSaveGraphics() qui a retourné cet objet GraphicsState particulier. Le bloc d'informations placé sur la pile lors de cet appel à la fonction GdipSaveGraphics() est retiré de la pile, de même que tous les blocs d'informations placés sur cette pile après cet appel de la fonction GdipSaveGraphics().

 

Les appels à une des fonctions GdipBeginContainer(), GdipBeginContainerI(), GdipBeginContainer2() permettent de placer des blocs d'informations sur la même pile que celle des appels à la fonction GdipSaveGraphics() . Tout comme un appel à la fonction GdipRestoreGraphics() est associé à un appel à la fonction GdipSaveGraphics(), un appel à la fonction GdipEndContainer() est associé à un appel à une des fonctions GdipBeginContainer(), GdipBeginContainerI(), GdipBeginContainer2().

 

Lorsque vous appelez la fonction GdipRestoreGraphics()., tous les blocs d'informations placés sur la pile (par la fonction GdipSaveGraphics() ou par une des fonctions GdipBeginContainer(), GdipBeginContainerI(), GdipBeginContainer2()) après l'appel correspondant à la fonction GdipSaveGraphics() sont retirés de la pile. De la même manière, lorsque vous appelez la fonction GdipEndContainer(),, tous les blocs d'informations placés sur la pile (par la fonction GdipSaveGraphics() ou par une des fonctions GdipBeginContainer(), GdipBeginContainerI(), GdipBeginContainer2()) après l'appel correspondant à une des fonctions GdipBeginContainer(), GdipBeginContainerI(), GdipBeginContainer2() sont enlevés de la pile.

Résultat de la fonction
Si la fonction réussit, elle retourne #Ok qui est une constante de l'énumération status.
Si la fonction échoue, elle retourne une des autres valeurs de l'énumération status.
PB - OS

PureBasic v4.30 bêta 4 (Windows - x86)
Testé avec Windows Vista édition familiale Premium