Fonction ExtCreatePen (wingdi.h)

La fonction ExtCreatePen crée un stylet logique ou géométrique qui a les attributs de style, de largeur et de pinceau spécifiés.

Syntaxe

HPEN ExtCreatePen(
  [in] DWORD          iPenStyle,
  [in] DWORD          cWidth,
  [in] const LOGBRUSH *plbrush,
  [in] DWORD          cStyle,
  [in] const DWORD    *pstyle
);

Paramètres

[in] iPenStyle

Combinaison d’attributs de type, de style, de limite de fin et de jointure. Les valeurs de chaque catégorie sont combinées à l’aide de l’opérateur OR au niveau du bit ( | ).

Le type de stylet peut être l’une des valeurs suivantes.

Valeur Signification
PS_GEOMETRIC
Le stylet est géométrique.
PS_COSMETIC
Le stylet est cosmétique.
 

Le stylet peut être l’une des valeurs suivantes.

Valeur Signification
PS_ALTERNATE
Le stylet définit un pixel sur deux. (Ce style s’applique uniquement aux stylets cosmétiques.)
PS_SOLID
Le stylet est plein.
PS_DASH
Le stylet est en pointillés.
PS_DOT
Le stylet est pointillé.
PS_DASHDOT
Le stylet comporte des tirets et des points en alternance.
PS_DASHDOTDOT
Le stylet comporte des tirets et des points doubles en alternance.
PS_NULL
Le stylet est invisible.
PS_USERSTYLE
Le stylet utilise un tableau de stylet fourni par l’utilisateur.
PS_INSIDEFRAME
Le stylet est plein. Lorsque ce stylet est utilisé dans n’importe quelle fonction de dessin GDI qui prend un rectangle englobant, les dimensions de la figure sont réduites de sorte qu’elle tient entièrement dans le rectangle englobant, en tenant compte de la largeur du stylet. Cela s’applique uniquement aux stylets géométriques.
 

L’extrémité est spécifiée uniquement pour les stylets géométriques. La limite de fin peut être l’une des valeurs suivantes.

Valeur Signification
PS_ENDCAP_ROUND
Les extrémités sont rondes.
PS_ENDCAP_SQUARE
Les extrémités sont carrées.
PS_ENDCAP_FLAT
Les extrémités sont plates.
 

La jointure est spécifiée uniquement pour les stylets géométriques. La jointure peut être l’une des valeurs suivantes.

Valeur Signification
PS_JOIN_BEVEL
Les jointures sont biseautées.
PS_JOIN_MITER
Les jointures sont mitées lorsqu’elles se trouvent dans la limite actuelle définie par la fonction SetMiterLimit . Si elle dépasse cette limite, la jointure est biseautée.
PS_JOIN_ROUND
Les jointures sont rondes.

[in] cWidth

Largeur du stylet. Si le paramètre dwPenStyle est PS_GEOMETRIC, la largeur est indiquée en unités logiques. Si dwPenStyle est PS_COSMETIC, la largeur doit être définie sur 1.

[in] plbrush

Pointeur vers une structure LOGBRUSH . Si dwPenStyle est PS_COSMETIC, le membre lbColor spécifie la couleur du stylet et le membre lpStyle doit être défini sur BS_SOLID. Si dwPenStyle est PS_GEOMETRIC, tous les membres doivent être utilisés pour spécifier les attributs de pinceau du stylet.

[in] cStyle

Longueur, en unités DWORD , du tableau lpStyle . Cette valeur doit être égale à zéro si dwPenStyle n’est pas PS_USERSTYLE.

Le nombre de styles est limité à 16.

[in] pstyle

Pointeur vers un tableau. La première valeur spécifie la longueur du premier tiret dans un style défini par l’utilisateur, la deuxième valeur spécifie la longueur du premier espace, et ainsi de suite. Ce pointeur doit avoir la valeur NULL si dwPenStyle n’est pas PS_USERSTYLE.

Si le tableau lpStyle est dépassé pendant le dessin de trait, le pointeur est réinitialisé au début du tableau. Lorsque cela se produit et que dwStyleCount est un nombre pair, le modèle de tirets et d’espaces se répète. Toutefois, si dwStyleCount est impair, le modèle s’inverse lorsque le pointeur est réinitialisé. Le premier élément de lpStyle fait maintenant référence aux espaces, le second fait référence aux tirets, etc.

Valeur retournée

Si la fonction réussit, la valeur de retour est un handle qui identifie un stylet logique.

Si la fonction échoue, la valeur de retour est égale à zéro.

Remarques

Un stylet géométrique peut avoir n’importe quelle largeur et avoir n’importe lequel des attributs d’un pinceau, tels que des trames et des motifs. Un stylet cosmétique ne peut avoir qu’un seul pixel de large et doit être d’une couleur unie, mais les stylets cosmétiques sont généralement plus rapides que les stylos géométriques.

La largeur d’un stylet géométrique est toujours spécifiée en unités universelles. La largeur d’un stylet cosmétique est toujours de 1.

Les extrémités et les jointures sont spécifiées uniquement pour les stylets géométriques.

Une fois qu’une application a créé un stylet logique, elle peut sélectionner ce stylet dans un contexte d’appareil en appelant la fonction SelectObject . Une fois qu’un stylet est sélectionné dans un contexte d’appareil, il peut être utilisé pour dessiner des lignes et des courbes.

Si dwPenStyle est PS_COSMETIC et PS_USERSTYLE, les entrées du tableau lpStyle spécifient des longueurs de tirets et d’espaces dans les unités de style. Une unité de style est définie par l’appareil où le stylet est utilisé pour dessiner une ligne.

Si dwPenStyle est PS_GEOMETRIC et PS_USERSTYLE, les entrées du tableau lpStyle spécifient des longueurs de tirets et d’espaces en unités logiques.

Si dwPenStyle est PS_ALTERNATE, l’unité de style est ignorée et tous les autres pixels sont définis.

Si le membre lbStyle de la structure LOGBRUSH pointée par lplb est BS_PATTERN, la bitmap pointée par le membre lbHatch de cette structure ne peut pas être une section DIB. Une section DIB est une bitmap créée par CreateDIBSection. Si cette bitmap est une section DIB, la fonction ExtCreatePen échoue.

Lorsqu’une application n’a plus besoin d’un stylet spécifié, elle doit appeler la fonction DeleteObject pour supprimer le stylet.

ICM: Aucune gestion des couleurs n’est effectuée lors de la création du stylet. Toutefois, la gestion des couleurs est effectuée lorsque le stylet est sélectionné dans un contexte d’appareil compatible ICM.

Exemples

Pour obtenir un exemple, consultez Utilisation de stylets.

Configuration requise

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête wingdi.h (inclure Windows.h)
Bibliothèque Gdi32.lib
DLL Gdi32.dll

Voir aussi

CreateDIBSection

CreatePen

CreatePenIndirect

DeleteObject

Getobject

LOGBRUSH

Fonctions de stylet

Vue d’ensemble des stylos

SelectObject

SetMiterLimit