Partager via


La classe CPen

Encapsule un stylet GDI (Graphics Device Interface) Windows.

Syntaxe

class CPen : public CGdiObject

Membres

Constructeurs publics

Nom Description
CPen::CPen Construit un objet CPen.

Méthodes publiques

Nom Description
CPen::CreatePen Crée un stylet logique ou géométrique avec le style, la largeur et les attributs de pinceau spécifiés, et l’attache à l’objet CPen .
CPen::CreatePenIndirect Crée un stylet avec le style, la largeur et la couleur donnés dans une LOGPEN structure, et l’attache à l’objet CPen .
CPen::FromHandle Retourne un pointeur vers un CPen objet lorsqu’un HPEN Windows est donné.
CPen::GetExtLogPen Obtient une EXTLOGPEN structure sous-jacente.
CPen::GetLogPen Obtient une LOGPEN structure sous-jacente.

Opérateurs publics

Nom Description
CPen::operator HPEN Retourne le handle Windows attaché à l’objet CPen .

Notes

Pour plus d’informations sur l’utilisation CPen, consultez Objets graphiques.

Hiérarchie d'héritage

CObject

CGdiObject

CPen

Spécifications

En-tête : afxwin.h

CPen::CPen

Construit un objet CPen.

CPen();

CPen(
    int nPenStyle,
    int nWidth,
    COLORREF crColor);

CPen(
    int nPenStyle,
    int nWidth,
    const LOGBRUSH* pLogBrush,
    int nStyleCount = 0,
    const DWORD* lpStyle = NULL);

Paramètres

nPenStyle
Spécifie le stylet de stylet. Ce paramètre dans la première version du constructeur peut être l’une des valeurs suivantes :

  • PS_SOLID Crée un stylet solide.

  • PS_DASH Crée un stylet en pointillés. Valide uniquement lorsque la largeur du stylet est de 1 ou moins, en unités d’appareil.

  • PS_DOT Crée un stylet pointillé. Valide uniquement lorsque la largeur du stylet est de 1 ou moins, en unités d’appareil.

  • PS_DASHDOT Crée un stylet avec des tirets et des points alternés. Valide uniquement lorsque la largeur du stylet est de 1 ou moins, en unités d’appareil.

  • PS_DASHDOTDOT Crée un stylet avec des tirets alternés et des points doubles. Valide uniquement lorsque la largeur du stylet est de 1 ou moins, en unités d’appareil.

  • PS_NULL Crée un stylet Null.

  • PS_INSIDEFRAMECrée un stylet qui dessine une ligne à l’intérieur du cadre des formes fermées produites par les fonctions de sortie GDI Windows qui spécifient un rectangle englobant (par exemple, les Ellipsefonctions , , RectangleRoundRect, Pieet Chord membres). Lorsque ce style est utilisé avec les fonctions de sortie GDI Windows qui ne spécifient pas de rectangle englobant (par exemple, la LineTo fonction membre), la zone de dessin du stylet n’est pas limitée par un cadre.

La deuxième version du CPen constructeur spécifie une combinaison d’attributs de type, de style, de fin et de jointure. Les valeurs de chaque catégorie doivent être combinées à l’aide de l’opérateur « ou » au| niveau du bit. Le type de stylet peut être l’une des valeurs suivantes :

  • PS_GEOMETRIC Crée un stylet géométrique.

  • PS_COSMETIC Crée un stylet cosmétique.

    La deuxième version du CPen constructeur ajoute les styles de stylet suivants pour nPenStyle:

  • PS_ALTERNATE Crée un stylet qui définit tous les autres pixels. (Ce style s’applique uniquement aux stylos cosmétiques.)

  • PS_USERSTYLE Crée un stylet qui utilise un tableau de stylet fourni par l’utilisateur.

    La limite de fin peut être l’une des valeurs suivantes :

  • PS_ENDCAP_ROUND Les majuscules de fin sont rondes.

  • PS_ENDCAP_SQUARE Les extrémités sont carrées.

  • PS_ENDCAP_FLAT Les majuscules de fin sont plates.

    La jointure peut être l’une des valeurs suivantes :

  • PS_JOIN_BEVEL Les jointures sont biseautées.

  • PS_JOIN_MITER Les jointures sont miterées lorsqu’elles se trouvent dans la limite actuelle définie par la SetMiterLimit fonction. Si la jointure dépasse cette limite, elle est biseautée.

  • PS_JOIN_ROUND Les jointures sont rondes.

nWidth
Spécifie la largeur du stylet.

  • Pour la première version du constructeur, une valeur de 0 sera traitée de la même façon qu’une valeur de 1, sauf que la largeur ne sera pas affectée par les opérations de transformation d’échelle qui sont en vigueur pour l’objet Graphics pour lequel le stylet est utilisé ; la largeur sera toujours de 1 pixel.

  • Pour la deuxième version du constructeur, si nPenStyle c’est le cas PS_GEOMETRIC, la largeur est donnée en unités logiques. Si nPenStyle c’est PS_COSMETICle cas, la largeur doit être définie sur 1.

crColor
Contient une couleur RVB pour le stylet.

pLogBrush
Pointe vers une LOGBRUSH structure. Si nPenStyle c’est PS_COSMETICle cas, le lbColor membre de la LOGBRUSH structure spécifie la couleur du stylet et le lbStyle membre de la LOGBRUSH structure doit être défini sur BS_SOLID. Si nPenStyle c’est PS_GEOMETRICle cas, tous les membres doivent être utilisés pour spécifier les attributs de pinceau du stylet.

nStyleCount
Spécifie la longueur, en unités doubles, du lpStyle tableau. Cette valeur doit être zéro si nPenStyle ce n’est pas le cas PS_USERSTYLE.

lpStyle
Pointe vers un tableau de valeurs à double mot. 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 ce n’est pas le cas PS_USERSTYLE.

Notes

Si vous utilisez le constructeur sans argument, vous devez initialiser l’objet résultant CPen avec les fonctions membres ou CreateStockObject les CreatePenfonctions membresCreatePenIndirect.

Si vous utilisez le constructeur qui accepte des arguments, aucune initialisation supplémentaire n’est nécessaire. Le constructeur avec des arguments peut lever une exception si des erreurs sont rencontrées, tandis que le constructeur sans arguments réussit toujours.

Exemple

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

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

CPen::CreatePen

Crée un stylet logique ou géométrique avec le style, la largeur et les attributs de pinceau spécifiés, et l’attache à l’objet 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 nPenStyle paramètre dans le CPen constructeur.

nWidth
Spécifie la largeur du stylet.

  • Pour la première version de CreatePen, une valeur de 0 sera traitée de la même façon qu’une valeur de 1, sauf que la largeur ne sera pas affectée par les opérations de transformation d’échelle qui sont en vigueur pour l’objet Graphics utilisé par le stylet ; la largeur sera toujours de 1 pixel.

  • Pour la deuxième version de CreatePen, si nPenStyle c’est PS_GEOMETRICle cas, la largeur est donnée en unités logiques. Si nPenStyle c’est PS_COSMETICle cas, la largeur doit être définie sur 1.

crColor
Contient une couleur RVB pour le stylet.

pLogBrush
Pointe vers une LOGBRUSH structure. Si nPenStyle c’est PS_COSMETICle cas, le lbColor membre de la LOGBRUSH structure spécifie la couleur du stylet et le lbStyle membre de la LOGBRUSH structure doit être défini sur BS_SOLID. Si nPenStyle c’est PS_GEOMETRICle cas, tous les membres doivent être utilisés pour spécifier les attributs de pinceau du stylet.

nStyleCount
Spécifie la longueur, en unités doubles, du lpStyle tableau. Cette valeur doit être zéro si nPenStyle ce n’est pas le cas PS_USERSTYLE.

lpStyle
Pointe vers un tableau de valeurs à double mot. 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 ce n’est pas le cas PS_USERSTYLE.

Valeur de retour

Différent de zéro en cas de réussite, ou zéro si la méthode échoue.

Notes

La première version d’initialise CreatePen 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 d’appareil.

Les stylets dont la largeur est supérieure à 1 pixel doivent toujours avoir le style ou PS_SOLIDPS_INSIDEFRAME le PS_NULLstyle.

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

La deuxième version d’initialise CreatePen un stylet logique ou géométrique qui a le style, la largeur et les attributs de pinceau spécifiés. La largeur d’un stylo cosmétique est toujours 1 ; la largeur d’un stylet géométrique est toujours spécifiée dans les unités du monde. Une fois qu’une application a créé un stylet logique, elle peut sélectionner ce stylet dans un contexte d’appareil en appelant la CDC::SelectObject fonction. 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 nPenStyle c’est PS_COSMETIC le cas et PS_USERSTYLE, les entrées du lpStyle tableau 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 dans lequel le stylet est utilisé pour dessiner une ligne.

  • Si nPenStyle c’est PS_GEOMETRIC le cas et PS_USERSTYLE, les entrées du lpStyle tableau spécifient des longueurs de tirets et d’espaces dans des unités logiques.

  • Si nPenStyle c’est PS_ALTERNATEle cas, l’unité de style est ignorée et chaque autre pixel est défini.

Lorsqu’une application n’a plus besoin d’un stylet donné, elle doit appeler la CGdiObject::DeleteObject fonction membre ou détruire l’objet CPen afin que la ressource ne soit plus utilisée. Une application ne doit pas supprimer un stylet lorsque le stylet est sélectionné dans un contexte d’appareil.

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);

CPen::CreatePenIndirect

Initialise un stylet qui a le style, la largeur et la couleur donnés dans la structure pointée par lpLogPen.

BOOL CreatePenIndirect(LPLOGPEN lpLogPen);

Paramètres

lpLogPen
Pointe vers la structure Windows LOGPEN qui contient des informations sur le stylet.

Valeur de retour

Une valeur différente de zéro si la fonction réussit ; sinon, 0.

Notes

Les stylets dont la largeur est supérieure à 1 pixel doivent toujours avoir le style ou PS_SOLIDPS_INSIDEFRAME le PS_NULLstyle.

Si un stylet a le PS_INSIDEFRAME stylet et une couleur qui ne correspondent pas à une couleur dans la table de couleurs logiques, le stylet est dessiné avec une couleur de trame. Le PS_INSIDEFRAME style est identique si PS_SOLID la largeur du stylet est inférieure ou égale à 1.

Exemple

LOGPEN logpen;
CPen   cMyPen;

// Get the LOGPEN of an existing pen.
penExisting.GetLogPen(&logpen);

// Change the color to red and the width to 2.
logpen.lopnWidth.x = 2;
logpen.lopnColor = RGB(255, 0, 0);

// Create my pen using the new settings.
cMyPen.CreatePenIndirect(&logpen);

CPen::FromHandle

Retourne un pointeur vers un CPen objet donné un handle vers un objet de stylet GDI Windows.

static CPen* PASCAL FromHandle(HPEN hPen);

Paramètres

hPen
HPEN handle vers le stylet GDI Windows.

Valeur de retour

Pointeur vers un CPen objet en cas de réussite ; sinon NULL.

Notes

Si un CPen objet n’est pas attaché au handle, un objet temporaire CPen est créé et attaché. Cet objet temporaire CPen est valide uniquement jusqu’à la prochaine fois que l’application a un temps d’inactivité dans sa boucle d’événements, auquel cas tous les objets graphiques temporaires sont supprimés. En d’autres termes, l’objet temporaire n’est valide que pendant le traitement d’un message de fenêtre.

Exemple

// Convert an HPEN to a CPen*.
// NOTE: hPen is a valid pen handle.
CPen* pPen = CPen::FromHandle(hPen);

CPen::GetExtLogPen

Obtient une EXTLOGPEN structure sous-jacente.

int GetExtLogPen(EXTLOGPEN* pLogPen);

Paramètres

pLogPen
Pointe vers une EXTLOGPEN structure qui contient des informations sur le stylet.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

La EXTLOGPEN structure définit le style, la largeur et les attributs de pinceau d’un stylet. Par exemple, appelez GetExtLogPen pour correspondre au style particulier d’un stylet.

Consultez les rubriques suivantes dans le Kit de développement logiciel (SDK) Windows pour plus d’informations sur les attributs de stylet :

Exemple

L’exemple de code suivant montre comment appeler GetExtLogPen pour récupérer les attributs d’un stylet, puis créer un stylet cosmétique de même couleur.

EXTLOGPEN extlogpen;
penExisting.GetExtLogPen(&extlogpen);
CPen penOther;
LOGBRUSH LogBrush = { extlogpen.elpBrushStyle, extlogpen.elpColor,
   extlogpen.elpHatch };
penOther.CreatePen(PS_COSMETIC, 1, &LogBrush);

CPen::GetLogPen

Obtient une LOGPEN structure sous-jacente.

int GetLogPen(LOGPEN* pLogPen);

Paramètres

pLogPen
Pointe vers une LOGPEN structure pour contenir des informations sur le stylet.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

La LOGPEN structure définit le style, la couleur et le motif d’un stylet.

Par exemple, appel GetLogPen pour correspondre au stylet particulier du stylet.

Consultez les rubriques suivantes dans le Kit de développement logiciel (SDK) Windows pour plus d’informations sur les attributs de stylet :

Exemple

L’exemple de code suivant montre comment appeler GetLogPen pour récupérer un caractère de stylet, puis créer un stylet unie avec la même couleur.

LOGPEN logpen;
penExisting.GetLogPen(&logpen);
CPen penOther(PS_SOLID, 0, logpen.lopnColor);

CPen::operator HPEN

Obtient le handle GDI Windows attaché de l’objet CPen .

operator HPEN() const;

Valeur de retour

En cas de réussite, un handle vers l’objet GDI Windows représenté par l’objet CPen ; sinon NULL.

Notes

Cet opérateur est un opérateur de cast, qui prend en charge l’utilisation directe d’un HPEN objet.

Pour plus d’informations sur l’utilisation d’objets graphiques, consultez l’article Objets graphiques dans le Kit de développement logiciel (SDK) Windows.

Exemple

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

// Get the handle of the pen object.
HPEN hPen = (HPEN)myPen;

Voir aussi

CGdiObject Classe
Graphique hiérarchique
CBrush Classe