Leggere in inglese

Condividi tramite


CPen::CreatePen

Crea un cosmetico logico o una penna geometrica con lo stile, la larghezza e gli attributi specificati pennello e allegarlo all'oggetto 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  
);

Parametri

  • nPenStyle
    Specifica lo stile della penna. Per un elenco di valori possibili, vedere il parametro nPenStyle nel costruttore CPen.

  • nWidth
    Specifica la larghezza della penna.

    • Per la prima versione CreatePen, se questo valore è 0, la larghezza in unità è sempre 1 pixel, indipendentemente dalla modalità di mapping.

    • Per la seconda versione CreatePen, se nPenStyle è PS_GEOMETRIC, la larghezza riceve unità logiche fornite. Se nPenStyle è PS_COSMETIC, la larghezza deve essere impostata su 1.

  • crColor
    Contiene un colore RGB per la penna.

  • pLogBrush
    Punta a una struttura LOGBRUSH. Se nPenStyle è PS_COSMETIC, il membro lbColor della struttura LOGBRUSH specifica il colore della penna e il membro lbStyle della struttura LOGBRUSH deve essere impostata su BS_SOLID. Se nPenStyle è PS_GEOMETRIC, tutti i membri devono essere utilizzati per specificare gli attributi del pennello della penna.

  • nStyleCount
    Specifica la lunghezza, in unità i primi quattro byte, della matrice lpStyle. Questo valore deve essere zero se nPenStyle non è PS_USERSTYLE.

  • lpStyle
    Punta a una matrice di valori dei primi quattro byte. Il primo valore specifica la lunghezza del primo trattino in uno stile definito, il secondo valore specifica la lunghezza del primo spazio, e così via. Questo puntatore deve essere null se nPenStyle non è PS_USERSTYLE.

Valore restituito

Diverso da zero se l'operazione riesce, o zero se il metodo ha esito negativo.

Note

La prima versione CreatePen inizializza una penna con lo stile, la larghezza e il colore specificato. La penna successivamente può essere selezionata come la penna corrente per qualsiasi contesto di dispositivo.

Penne con una larghezza maggiore di 1 pixel deve sempre disporre dello stile PS_NULL, PS_SOLID, o PS_INSIDEFRAME.

Se una penna con lo stile PS_INSIDEFRAME e un colore che non corrisponde a un colore nella tabella dei colori logica, la penna viene disegnata con un colore retinato. Lo stile della penna PS_SOLID non può essere utilizzato per creare una penna con un colore retinato. Lo stile PS_INSIDEFRAME è identico a PS_SOLID se la larghezza della penna è minore o uguale a 1.

La seconda versione CreatePen inizializza un cosmetico logico o una penna geometrica con lo stile, la larghezza e gli attributi specificati pennello. La larghezza della penna cosmetica è sempre 1; la larghezza della penna geometrica viene specificata sempre in unità world. Dopo che un'applicazione creata una penna logica, può selezionare quella penna in un contesto di dispositivo chiamando la funzione CDC::SelectObject. Dopo che una penna è selezionata in un contesto di dispositivo, può essere utilizzata per tracciare linee e curve.

  • Se nPenStyle è PS_COSMETIC e PS_USERSTYLE, le voci della matrice lpStyle specificano le lunghezze dei trattini e gli spazi in unità di stile. Un'unità di stile è definita dal dispositivo in cui la penna utilizzata per disegnare una riga.

  • Se nPenStyle è PS_GEOMETRIC e PS_USERSTYLE, le voci della matrice lpStyle specificano le lunghezze dei trattini e gli spazi in unità logiche.

  • Se nPenStyle è PS_ALTERNATE, un'unità di stile viene ignorata e ogni altro pixel è impostato su.

Quando un'applicazione non richiede più una penna specificata, deve chiamare la funzione membro CGdiObject::DeleteObject o eliminare l'oggetto CPen in modo che la risorsa non viene più utilizzata. Un'applicazione non deve eliminare una penna quando la penna è selezionata in un contesto di dispositivo.

Esempio

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

Requisiti

Header: afxwin.h

Vedere anche

Riferimenti

Classe CPen

Grafico delle gerarchie

CPen::CreatePenIndirect

CPen::CPen

CGdiObject::DeleteObject

LOGBRUSH