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
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_INSIDEFRAME
Cré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, lesEllipse
fonctions , ,Rectangle
RoundRect
,Pie
etChord
membres). Lorsque ce style est utilisé avec les fonctions de sortie GDI Windows qui ne spécifient pas de rectangle englobant (par exemple, laLineTo
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 pournPenStyle
: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 laSetMiterLimit
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 casPS_GEOMETRIC
, la largeur est donnée en unités logiques. SinPenStyle
c’estPS_COSMETIC
le 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_COSMETIC
le 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_GEOMETRIC
le 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 CreatePen
fonctions 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
, sinPenStyle
c’estPS_GEOMETRIC
le cas, la largeur est donnée en unités logiques. SinPenStyle
c’estPS_COSMETIC
le 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_COSMETIC
le 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_GEOMETRIC
le 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_SOLID
PS_INSIDEFRAME
le PS_NULL
style.
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’estPS_COSMETIC
le cas etPS_USERSTYLE
, les entrées dulpStyle
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’estPS_GEOMETRIC
le cas etPS_USERSTYLE
, les entrées dulpStyle
tableau spécifient des longueurs de tirets et d’espaces dans des unités logiques.Si
nPenStyle
c’estPS_ALTERNATE
le 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_SOLID
PS_INSIDEFRAME
le PS_NULL
style.
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;