GdipEndContainer()



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

[in] Pointeur sur un objet Graphics existant.

*state

[in] Pointeur sur l'état du graphique (objet GraphicsContainer - conteneur graphique) retourné par une des fonctions de création des conteneurs graphiques.

Description

Cette fonction permet de fermer le conteneur graphique créé avec une des fonctions GdipBeginContainer2(), GdipBeginContainer() ou GdipBeginContainerI(). Tous les conteneurs graphiques créés après la création de ce conteneur sont supprimés (voir la note de Microsoft pour les fonctions GdipBeginContainer2(), GdipBeginContainer() ou GdipBeginContainerI()).

Après l'appel de cette fonction, le graphique prend les propriétés du conteneur précédant s'il existe sinon il prend les propriétés initiales du graphique.

A chaque appel de l'une des fonctions GdipBeginContainer2(), GdipBeginContainer() ou GdipBeginContainerI() doit correspondre un appel à la fonction GdipEndContainer() lorsque le conteneur graphique n'est plus utile.

Tous les exemples utilisant les conteneurs graphiques utilisent cette fonction. L'exemple est le premier exemple de la fonction GdipBeginContainer2().

L'exemple utilise un graphique à partir de l'identifiant système de la fenêtre. Un premier conteneur graphique est créé, ensuite on applique au graphique une translation en x de 50 et y de 150. Un deuxième conteneur est créé sans fermer le premier avec la fonction GdipEndContainer(), on applique au graphique une translation en x de -50 et en y de -150 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 etr y = 0. Le deuxième container est fermé avec la fonction GdipEndContainer(). Par conséquent, on revient au premier conteneur dont les caractéristiques s'appliquent au graphique, soit la translation en x de 50 et y de 150.
Lorsque le timer déclenche la première fois, on dessine et rempli un rectangle de 200 x 200 en jaune à la position x = 0 etr y = 0. Ce rectangle réellement est positionné en x = 50 et y = 150 du aux propriétés du conteneur appliquées au graphique. Au deuxième déclenchement du timer, l'application se ferme.

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

Lorsque vous appelez une des fonctions GdipBeginContainer(), GdipBeginContainerI(), GdipBeginContainer2(), un bloc d'informations qui comporte l'état de l'objet Graphics est placé sur une pile. Une des fonctions GdipBeginContainer(), GdipBeginContainerI(), GdipBeginContainer2() retourne un objet GraphicsContainer qui identifie ce bloc d'informations. Lorsque vous passez l'objet d'identification à la fonction GdipEndContainer(), 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 à une des fonctions GdipBeginContainer(), GdipBeginContainerI(), GdipBeginContainer2().

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

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

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

L'état des graphiques établi par une des fonctions GdipBeginContainer(), GdipBeginContainerI(), GdipBeginContainer2() comprend les qualités de rendu de l'état des graphiques par défaut ; tout changement de la qualité de rendu de l'état constaté au moment de l'appel à la fonction provoque le rétablissement des valeurs par défaut.

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