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
);
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.
Diverso da zero se l'operazione riesce, o zero se il metodo ha esito negativo.
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.
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);
Header: afxwin.h