Partager via


CPen::CreatePen

Crée un cosmétique logique ou un stylet géométrique avec le style, la largeur, les attributs spécifiés du pinceau, et l'attache à l'objet d' CPen .

BOOL CreatePen(
   int nPenStyle,
   int nWidth,
   COLORREF crColor 
);
BOOL CreatePen(
   int nPenStyle,
   int nWidth,
   const LOGBRUSH* pLogBrush,
   int nStyleCount = 0,
   const DWORD* lpStyle = NULL 
);

Paramètres

  • nPenStyle
    Spécifie le style du stylet.Pour obtenir la liste des valeurs possibles, consultez le paramètre d' nPenStyle dans le constructeur de CPen .

  • nWidth
    Spécifie la largeur du stylet.

    • Pour la première version d' CreatePen, si cette valeur est 0, la largeur des unités est toujours 1 pixel, quel que soit le mode de mappage.

    • Pour la deuxième version d' CreatePen, si nPenStyle est PS_GEOMETRIC, la largeur est spécifiée en unités logiques.Si nPenStyle est PS_COSMETIC, la largeur doit être définie à 1.

  • crColor
    Contient une couleur RVB pour le stylet.

  • pLogBrush
    Pointe vers une structure de LOGBRUSH .Si nPenStyle est PS_COSMETIC, le membre de lbColor de la structure d' LOGBRUSH spécifie la couleur du stylet et le membre d' lbStyle de la structure d' LOGBRUSH doit avoir la valeur BS_SOLID.Si nPenStyle est PS_GEOMETRIC, tous les membres doivent être utilisés pour spécifier les attributs de pinceau du stylet.

  • nStyleCount
    Spécifie la durée, en unités de mot dupliqué, du tableau d' lpStyle .Cette valeur doit être égal à zéro si nPenStyle n'est pas PS_USERSTYLE.

  • lpStyle
    Pointe vers un tableau de valeurs de mot double.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 être NULL si nPenStyle n'est pas PS_USERSTYLE.

Valeur de retour

Une valeur différente de zéro en cas de réussite, ou zéro si la méthode échoue.

Notes

La première version d' CreatePen initialise un stylet avec le style, la largeur, et la couleur spécifiés.Le stylet peut ensuite être sélectionné comme stylet actuel pour n'importe quel contexte de périphérique.

Les stylets qui ont une largeur supérieure à 1 pixel doivent toujours avoir le style de PS_NULL, de PS_SOLID, ou de PS_INSIDEFRAME .

Si un stylet a le style de PS_INSIDEFRAME et une couleur qui ne correspond pas à une couleur dans la table des couleurs logique, le stylet est dessiné avec une couleur dégradée.Le style de stylet de PS_SOLID ne peut pas être utilisé pour créer un stylet avec une couleur dégradée.Le style PS_INSIDEFRAME identique à PS_SOLID si la largeur du stylet est inférieure ou égale à 1.

La deuxième version d' CreatePen initialise un cosmétique logique ou un stylet géométrique qui a le style, la largeur, les attributs spécifiés du pinceau.La largeur d'un stylet cosmétique est toujours 1 ; la largeur d'un stylet géométrique est toujours spécifiée en unités du monde.Une fois qu'une application crée un stylet logique, il peut sélectionner ce stylet dans un contexte de périphérique en appelant la fonction de CDC::SelectObject .Après qu'un stylet est sélectionné dans un contexte de périphérique, il peut être utilisé pour dessiner des lignes et des courbes.

  • Si nPenStyle est PS_COSMETIC et PS_USERSTYLE, les entrées de la matrice d' lpStyle spécifient des longueurs des tirets et des espaces dans les unités de style.Une unité de style définie par le périphérique dans lequel le stylet est utilisé pour dessiner une ligne.

  • Si nPenStyle est PS_GEOMETRIC et PS_USERSTYLE, les entrées de la matrice d' lpStyle spécifient des longueurs des tirets et des espaces en unités logiques.

  • Si nPenStyle est PS_ALTERNATE, l'unité de style est ignorée et chaque autre pixel est défini.

Lorsqu'une application ne nécessite plus un stylet donné, il doit appeler la fonction membre de CGdiObject::DeleteObject ou destruction de l'objet d' CPen ainsi la ressource n'est plus utilisé.Une application ne doit pas supprimer un stylet lorsque le stylet est sélectionné dans un contexte de périphérique.

Exemple

CPen myPen1, myPen2;

// Create a solid red pen of width 2.
myPen1.CreatePen(PS_SOLID, 2, RGB(255,0,0));

// Create a geometric pen.
LOGBRUSH logBrush;
logBrush.lbStyle = BS_SOLID;
logBrush.lbColor = RGB(0,255,0);
myPen2.CreatePen(PS_DOT|PS_GEOMETRIC|PS_ENDCAP_ROUND, 2, &logBrush);   

Configuration requise

en-tête : afxwin.h

Voir aussi

Référence

Classe de CPen

Graphique de la hiérarchie

CPen::CreatePenIndirect

CPen::CPen

CGdiObject::DeleteObject

LOGBRUSH