Funzione ExtCreatePen (wingdi.h)
La funzione ExtCreatePen crea una penna cosmetica o geometrica logica con gli attributi di stile, larghezza e pennello specificati.
Sintassi
HPEN ExtCreatePen(
[in] DWORD iPenStyle,
[in] DWORD cWidth,
[in] const LOGBRUSH *plbrush,
[in] DWORD cStyle,
[in] const DWORD *pstyle
);
Parametri
[in] iPenStyle
Combinazione di attributi type, style, end cap e join. I valori di ogni categoria vengono combinati usando l'operatore OR bit per bit ( | ).
Il tipo di penna può essere uno dei valori seguenti.
Valore | Significato |
---|---|
|
La penna è geometrica. |
|
La penna è cosmetica. |
Lo stile della penna può essere uno dei valori seguenti.
Il limite finale viene specificato solo per le penne geometriche. Il limite finale può essere uno dei valori seguenti.
Valore | Significato |
---|---|
|
I limiti finali sono arrotondati. |
|
I limiti finali sono quadrati. |
|
I limiti finali sono flat. |
Il join viene specificato solo per le penne geometriche. Il join può essere uno dei valori seguenti.
Valore | Significato |
---|---|
|
I join vengono svelti. |
|
I join vengono miterati quando si trovano all'interno del limite corrente impostato dalla funzione SetMiterLimit . Se supera questo limite, il join vienevelato. |
|
I join sono arrotondati. |
[in] cWidth
Larghezza della penna. Se il parametro dwPenStyle è PS_GEOMETRIC, la larghezza viene specificata in unità logiche. Se dwPenStyle è PS_COSMETIC, la larghezza deve essere impostata su 1.
[in] plbrush
Puntatore a una struttura LOGBRUSH . Se dwPenStyle è PS_COSMETIC, il membro lbColor specifica il colore della penna e il membro lpStyle deve essere impostato su BS_SOLID. Se dwPenStyle è PS_GEOMETRIC, tutti i membri devono essere usati per specificare gli attributi del pennello della penna.
[in] cStyle
Lunghezza, nelle unità DWORD , della matrice lpStyle . Questo valore deve essere zero se dwPenStyle non è PS_USERSTYLE.
Il conteggio dello stile è limitato a 16.
[in] pstyle
Puntatore a una matrice. Il primo valore specifica la lunghezza del primo trattino in uno stile definito dall'utente, il secondo valore specifica la lunghezza del primo spazio e così via. Questo puntatore deve essere NULL se dwPenStyle non è PS_USERSTYLE.
Se la matrice lpStyle viene superata durante il disegno della linea, il puntatore viene reimpostato all'inizio della matrice. Quando si verifica e dwStyleCount è un numero pari, il modello di trattini e spazi si ripete. Tuttavia, se dwStyleCount è strano, il modello si inverte quando il puntatore viene reimpostato - il primo elemento di lpStyle ora fa riferimento a spazi, il secondo fa riferimento a trattini e così via.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è un handle che identifica una penna logica.
Se la funzione ha esito negativo, il valore restituito è zero.
Commenti
Una penna geometrica può avere qualsiasi larghezza e può avere uno qualsiasi degli attributi di un pennello, ad esempio dithers e modelli. Una penna cosmetica può essere solo un singolo pixel wide e deve essere un colore a tinta unita, ma le penne cosmetiche sono generalmente più veloci rispetto alle penne geometriche.
La larghezza di una penna geometrica viene sempre specificata nelle unità mondiali. La larghezza di una penna cosmetica è sempre 1.
Le estremità e i join vengono specificati solo per le penne geometriche.
Dopo che un'applicazione crea una penna logica, può selezionare tale penna in un contesto di dispositivo chiamando la funzione SelectObject . Dopo aver selezionato una penna in un contesto di dispositivo, può essere usata per disegnare linee e curve.
Se dwPenStyle è PS_COSMETIC e PS_USERSTYLE, le voci nella matrice lpStyle specificano le lunghezze dei trattini e degli spazi nelle unità di stile. Un'unità di stile viene definita dal dispositivo in cui viene usata la penna per disegnare una linea.
Se dwPenStyle è PS_GEOMETRIC e PS_USERSTYLE, le voci nella matrice lpStyle specificano lunghezze di trattini e spazi in unità logiche.
Se dwPenStyle è PS_ALTERNATE, l'unità di stile viene ignorata e ogni altro pixel viene impostato.
Se il membro lbStyle della struttura LOGBRUSH a cui punta lplb è BS_PATTERN, la bitmap puntata al membro lbHatch di tale struttura non può essere una sezione DIB. Una sezione DIB è una bitmap creata da CreateDIBSection. Se la bitmap è una sezione DIB, la funzione ExtCreatePen ha esito negativo.
Quando un'applicazione non richiede più una penna specificata, deve chiamare la funzione DeleteObject per eliminare la penna.
ICM: Nessuna gestione dei colori viene eseguita alla creazione della penna. Tuttavia, la gestione dei colori viene eseguita quando la penna viene selezionata in un contesto di dispositivo abilitato per ICM.
Esempio
Per un esempio, vedere Uso di penne.
Requisiti
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | wingdi.h (include Windows.h) |
Libreria | Gdi32.lib |
DLL | Gdi32.dll |