Freigeben über


CPen::CreatePen

Stellt eine logische Kosmetik oder eines geometrischen Stift mit dem angegebenen Format, Breite und den Pinselattributen erstellt und fügt ihn dem CPen-Objekt.

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

Parameter

  • nPenStyle
    Gibt das Format für den Stift an. Eine Liste der möglichen Werten, finden Sie im nPenStyle-Parameter im Konstruktor CPen.

  • nWidth
    Gibt die Breite des Stiftes an.

    • Für die erste Version von CreatePen, wenn dieser Wert 0 ist, ist die Breite in den Geräteeinheiten immer 1 Pixel, unabhängig vom Zuordnungsmodus.

    • Für die zweite Version von CreatePen, wenn nPenStylePS_GEOMETRIC ist, wird die Breite in logischen Einheiten angegeben. Wenn nPenStylePS_COSMETIC ist, muss die Breite auf 1. festgelegt werden.

  • crColor
    Enthält eine RGB-Farbe für den Stift.

  • pLogBrush
    zeigt auf eine LOGBRUSH-Struktur. Wenn nPenStylePS_COSMETIC handelt, wird der lbColor-Member der Struktur LOGBRUSH die Farbe des Stiftes an und der lbStyle-Member der Struktur LOGBRUSH muss auf BS_SOLID festgelegt werden. Wenn nPenStylePS_GEOMETRIC ist, müssen alle Member verwendet werden, um die Pinselattribute des Stiftes anzugeben.

  • nStyleCount
    Gibt die Länge, in den Doppelworteinheiten, des lpStyle Arrays an. Dieser Wert muss gleich sein, wenn nPenStyle nicht PS_USERSTYLE ist.

  • lpStyle
    Punkte in einem Array Doppelwortwerten. Der erste Wert gibt die Länge des ersten Bindestrichs in einem benutzerdefinierten Format, der zweite Wert an die Länge des ersten Abstands, usw. an. Dieser Zeiger muss NULL sein, wenn nPenStyle nicht PS_USERSTYLE ist.

Rückgabewert

ungleich 0 (null), wenn erfolgreich oder null, wenn die Methode fehlschlägt.

Hinweise

Die erste Version von CreatePen initialisiert einen Stift mit dem angegebenen Format, Breite und Farbe. Der Stift kann als der aktuelle Stift für jeden Gerätekontext nach ausgewählt werden.

Stifte, die eine Breite verfügen, die größer ist als 1 Pixel, sollten entweder das PS_NULL, PS_SOLID oder PS_INSIDEFRAME Format immer haben.

Wenn ein Stift das PS_INSIDEFRAME Format und eine Farbe verfügt, die keine Farbe in der logischen Farbtabelle übereinstimmt, wird der Stift mit einer geditherten Farbe gezeichnet. Das PS_SOLID Stiftsformat kann nicht verwendet werden, um einen Stift mit einer geditherten Farbe zu erstellen. Das Format PS_INSIDEFRAME ist zu PS_SOLID identisch, wenn die Stiftbreite kleiner oder gleich 1. ist.

Die zweite Version von CreatePen initialisiert eine logische Kosmetik oder eines geometrischen Stift, der das angegebene Format, die Breite und die Pinselattribute verfügt. Die Breite eines kosmetischen Stiftes ist immer 1; die Breite eines geometrischen Stift wird immer in Welteinheiten angegeben. Nachdem eine Anwendung einen logischen Stift erstellt wird, kann sie diesen Stift in einen Gerätekontext auswählen, indem sie die CDC::SelectObject-Funktion aufrufen. Nachdem ein Stift in einen Gerätekontext ausgewählt ist, kann er Linien und Kurven verwendet werden.

  • Wenn nPenStylePS_COSMETIC und PS_USERSTYLE ist, geben die Einträge im lpStyle Array Längen Bindestrich und Leerzeichen in den Formateinheiten an. Eine Formateinheit wird durch das Gerät definiert, in dem der Stift verwendet wird, um eine Linie gezeichnet.

  • Wenn nPenStylePS_GEOMETRIC und PS_USERSTYLE ist, geben die Einträge im lpStyle Array Längen Bindestrich und Leerzeichen in logischen Einheiten an.

  • Wenn nPenStylePS_ALTERNATE ist, wird die Formateinheit ignoriert und jedes andere Pixel wird festgelegt.

Wenn eine Anwendung nicht mehr einen angegebenen Stift erfordert, sollte die CGdiObject::DeleteObject-Memberfunktion aufrufen oder das Objekt CPen zerstören, sodass die Ressource nicht mehr verwendet. Eine Anwendung sollte einen Stift nicht löschen, wenn der Stift in einem Gerätekontext ausgewählt ist.

Beispiel

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

Anforderungen

Header: afxwin.h

Siehe auch

Referenz

CPen-Klasse

Hierarchiediagramm

CPen::CreatePenIndirect

CPen::CPen

CGdiObject::DeleteObject

LOGBRUSH