GdipIsClipEmpty()



Syntaxe
Resultat.i = GdipIsClipEmpty(*graphics, @result.i)
Paramètres
*graphics

[in] Pointeur sur un objet Graphics existant.

result.i

[out] Variable qui recevra le résultat du test.

Description

Cette fonction permet de déterminer si la zone de découpage du graphique est vide ou non.
Si la zone de découpage est vide, result vaudra #True sinon #False.

Lorsque l'on crée un graphique, sa zone de découpage est dite infinie, cela signifie que l'ensemble de la surface est disponible pour dessiner.
Si la zone de découpage du graphique est vide, ce la signifie qu'il n'y a pas de zone sur laquelle dessiner.
Par conséquent, rien ne pourra être dessiné lorsque la zone de découpage est vide.

Il est possible d'avoir une zone de découpage qui soit en dehors des limites affichées du graphique, par exemple si un graphique a la taille de la fenêtre sur laquelle il est affiché, on peut définir une zone de découpage qui soit par exemple située à X = -100, Y = -100, largeur = 50 et hauteur = 50.

La fonction est illustrée avec deux exemples presque identiques sauf pour le paramètre de combinaison de la zone de découpage qui change.
Pour le premier exemple, la zone de découpe rectangulaire est créé avec le mode #CombineModeComplement et pour le second avec le mode #CombineModeReplace.
Un troisième exemple utilise une zone de découpage en dehors de l'affichage de la fenêtre. Dans cet exemple, on utilise la fonction GdipIsClipEmpty() et la fonction GdipIsVisibleClipEmpty().
Cet exemple utilise le mode de combinaison #CombineModeReplace.

Pour le premier exemple, la nouvelle zone de découpage créée avec le mode de combinaison #CombineModeComplement est vide :

Avant combinaison, la zone initiale existante est infinie.

La zone à combiner est rectangulaire (X = 0, Y = 0, largeur = 350, hauteur = 250).

Après combinaison, la région existante initiale est exclue de la nouvelle zone. Or, la zone rectangulaire complète est une partie de la zone initiale existante, il en résulte que la zone combinée à une surface nulle.

 

La fonction GdipIsClipEmpty() retournera #True. Il ne sera pas possible d'afficher sur cette zone avec GDI+. L'exemple tente d'afficher cette zone en bleu mais sans succès.


Pour le second exemple, la nouvelle zone de découpage créée avec le mode de combinaison #CombineModeReplace n'est pas vide :

Avant combinaison, la région initiale existante est infinie.

La zone à combiner est rectangulaire (X = 0, Y = 0, largeur = 350, hauteur = 250).

Après combinaison, la zone rectangulaire remplace la zone initiale de découpage et devient la nouvelle zone de découpage.

 

La fonction GdipIsClipEmpty() retournera #False. Il sera possible d'afficher sur cette zone. Cette zone sera colorée en bleu.

Pour le troisième exemple, la nouvelle zone de découpage créée avec le mode de combinaison #CombineModeReplace est non vide :

Avant combinaison, la zone initiale existante est infinie.

La zone à combiner est rectangulaire (X = -100, Y = -100, largeur = 50, hauteur = 50).

Après combinaison, la zone rectangulaire remplace la zone initiale de découpage et devient la nouvelle zone de découpage.

 

La fonction GdipIsClipEmpty() retournera #False. Il serait possible de dessiner sur cette zone avec GDI+ mais elle n'est pas visible. Par contre, la fonction GdipIsVisibleClipEmpty() retournera #True car l'intersection de la zone de découpage du graphique avec celle de la fenêtre n'est pas visible.

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