Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Classe
Incapsula una penna GDI (Graphics Device Interface) di Windows.
Sintassi
class CPen : public CGdiObject
Membri
Costruttori pubblici
| Nome | Descrizione |
|---|---|
CPen::CPen |
Costruisce un oggetto CPen. |
Metodi pubblici
| Nome | Descrizione |
|---|---|
CPen::CreatePen |
Crea una penna logica cosmetica o geometrica con gli attributi di stile, larghezza e pennello specificati e la associa all'oggetto CPen . |
CPen::CreatePenIndirect |
Crea una penna con lo stile, la larghezza e il colore specificati in una LOGPEN struttura e lo associa all'oggetto CPen . |
CPen::FromHandle |
Restituisce un puntatore a un CPen oggetto quando viene assegnato un HPEN di Windows. |
CPen::GetExtLogPen |
Ottiene una EXTLOGPEN struttura sottostante. |
CPen::GetLogPen |
Ottiene una LOGPEN struttura sottostante. |
Operatori pubblici
| Nome | Descrizione |
|---|---|
CPen::operator HPEN |
Restituisce l'handle di Windows associato all'oggetto CPen . |
Osservazioni:
Per altre informazioni sull'uso CPendi , vedere Oggetti grafici.
Gerarchia di ereditarietà
CPen
Requisiti
Intestazione: afxwin.h
CPen::CPen
Costruisce un oggetto CPen.
CPen();
CPen(
int nPenStyle,
int nWidth,
COLORREF crColor);
CPen(
int nPenStyle,
int nWidth,
const LOGBRUSH* pLogBrush,
int nStyleCount = 0,
const DWORD* lpStyle = NULL);
Parametri
nPenStyle
Specifica lo stile della penna. Questo parametro nella prima versione del costruttore può essere uno dei valori seguenti:
PS_SOLIDCrea una penna solida.PS_DASHCrea una penna tratteggiata. Valido solo quando la larghezza della penna è 1 o minore, in unità dispositivo.PS_DOTCrea una penna punteggiata. Valido solo quando la larghezza della penna è 1 o minore, in unità dispositivo.PS_DASHDOTCrea una penna con trattini e punti alternati. Valido solo quando la larghezza della penna è 1 o minore, in unità dispositivo.PS_DASHDOTDOTCrea una penna con trattini alternati e punti doppi. Valido solo quando la larghezza della penna è 1 o minore, in unità dispositivo.PS_NULLCrea una penna Null.PS_INSIDEFRAMECrea una penna che disegna una linea all'interno della cornice di forme chiuse prodotte dalle funzioni di output GDI di Windows che specificano un rettangolo di delimitazione, ad esempio leEllipsefunzioni membro ,RectangleRoundRect, ,PieeChord. Quando questo stile viene usato con le funzioni di output GDI di Windows che non specificano un rettangolo di delimitazione (ad esempio, laLineTofunzione membro), l'area di disegno della penna non è limitata da una cornice.
La seconda versione del CPen costruttore specifica una combinazione di attributi di tipo, stile, estremità finale e join. I valori di ogni categoria devono essere combinati usando l'operatore bit per bit "o" (|). Il tipo di penna può essere uno dei valori seguenti:
PS_GEOMETRICCrea una penna geometrica.PS_COSMETICCrea una penna cosmetica.La seconda versione del
CPencostruttore aggiunge gli stili di penna seguenti pernPenStyle:PS_ALTERNATECrea una penna che imposta ogni altro pixel. Questo stile è applicabile solo per penne cosmetiche.PS_USERSTYLECrea una penna che usa una matrice di stili fornita dall'utente.Il limite finale può essere uno dei valori seguenti:
PS_ENDCAP_ROUNDLe estremità finali sono arrotondate.PS_ENDCAP_SQUARELe estremità finali sono quadrate.PS_ENDCAP_FLATLe estremità finali sono piatte.Il join può essere uno dei valori seguenti:
PS_JOIN_BEVELI join vengono svelti.PS_JOIN_MITERI join vengono impostati correttamente quando sono entro il limite corrente impostato dallaSetMiterLimitfunzione. Se il join supera questo limite, viene svelto.PS_JOIN_ROUNDI join sono arrotondati.
nWidth
Specifica la larghezza della penna.
Per la prima versione del costruttore, un valore pari a 0 verrà trattato in modo analogo a un valore pari a 1, ad eccezione del fatto che la larghezza non verrà influenzata dalle operazioni di trasformazione della scala applicate per l'oggetto Graphics utilizzato dalla penna; la larghezza sarà sempre 1 pixel.
Per la seconda versione del costruttore, se
nPenStyleèPS_GEOMETRIC, la larghezza viene specificata in unità logiche. SenPenStyleèPS_COSMETIC, la larghezza deve essere impostata su 1.
crColor
Contiene un colore RGB per la penna.
pLogBrush
Punta a una LOGBRUSH struttura. Se nPenStyle è PS_COSMETIC, il lbColor membro della LOGBRUSH struttura specifica il colore della penna e il lbStyle membro della LOGBRUSH struttura deve essere impostato su BS_SOLID. Se nPenStyle è PS_GEOMETRIC, tutti i membri devono essere utilizzati per specificare gli attributi pennello della penna.
nStyleCount
Specifica la lunghezza, in unità doubleword, della lpStyle matrice. Questo valore deve essere zero se nPenStyle non PS_USERSTYLEè .
lpStyle
Punta a una matrice di valori doubleword. 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 nPenStyle non PS_USERSTYLEè .
Osservazioni:
Se si usa il costruttore senza argomenti, è necessario inizializzare l'oggetto risultante CPen con le CreatePenfunzioni membro , CreatePenIndirecto CreateStockObject .
Se si usa il costruttore che accetta argomenti, non è necessaria un'ulteriore inizializzazione. Il costruttore con argomenti può generare un'eccezione se vengono rilevati errori, mentre il costruttore senza argomenti avrà sempre esito positivo.
Esempio
// 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
Crea una penna logica cosmetica o geometrica con gli attributi di stile, larghezza e pennello specificati e la associa 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 dei valori possibili, vedere il nPenStyle parametro nel CPen costruttore.
nWidth
Specifica la larghezza della penna.
Per la prima versione di
CreatePen, un valore pari a 0 verrà trattato in modo analogo a un valore pari a 1, ad eccezione del fatto che la larghezza non sarà influenzata dalle operazioni di trasformazione della scala applicate per l'oggetto Graphics per cui viene usata la penna. La larghezza sarà sempre 1 pixel.Per la seconda versione di
CreatePen, senPenStyleèPS_GEOMETRIC, la larghezza viene specificata in unità logiche. SenPenStyleèPS_COSMETIC, la larghezza deve essere impostata su 1.
crColor
Contiene un colore RGB per la penna.
pLogBrush
Punta a una LOGBRUSH struttura. Se nPenStyle è PS_COSMETIC, il lbColor membro della LOGBRUSH struttura specifica il colore della penna e il lbStyle membro della LOGBRUSH struttura deve essere impostato su BS_SOLID. Se nPenStyle è PS_GEOMETRIC, tutti i membri devono essere utilizzati per specificare gli attributi pennello della penna.
nStyleCount
Specifica la lunghezza, in unità doubleword, della lpStyle matrice. Questo valore deve essere zero se nPenStyle non PS_USERSTYLEè .
lpStyle
Punta a una matrice di valori doubleword. 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 nPenStyle non PS_USERSTYLEè .
Valore restituito
Diverso da zero se ha esito positivo o zero se il metodo ha esito negativo.
Osservazioni:
La prima versione di CreatePen inizializza una penna con lo stile, la larghezza e il colore specificati. La penna può essere selezionata successivamente come penna corrente per qualsiasi contesto di dispositivo.
Le penne con una larghezza maggiore di 1 pixel devono avere sempre lo PS_NULLstile , PS_SOLIDo PS_INSIDEFRAME .
Se una penna ha lo PS_INSIDEFRAME stile e un colore che non corrisponde a un colore nella tabella colori logica, la penna viene disegnata con un colore dithered. Lo PS_SOLID stile della penna non può essere usato per creare una penna con un colore dithering. Lo stile PS_INSIDEFRAME è identico a PS_SOLID se la larghezza della penna è minore o uguale a 1.
La seconda versione di CreatePen inizializza una penna cosmetica o geometrica logica con gli attributi di stile, larghezza e pennello specificati. La larghezza di una penna cosmetica è sempre 1; la larghezza di una penna geometrica viene sempre specificata in unità mondiali. Dopo che un'applicazione crea una penna logica, può selezionarla in un contesto di dispositivo chiamando la CDC::SelectObject funzione . Dopo aver selezionato una penna in un contesto di dispositivo, può essere usata per disegnare linee e curve.
Se
nPenStyleèPS_COSMETICePS_USERSTYLE, le voci nellalpStylematrice specificano lunghezze di trattini e spazi nelle unità di stile. Un'unità di stile viene definita dal dispositivo in cui viene usata la penna per disegnare una linea.Se
nPenStyleèPS_GEOMETRICePS_USERSTYLE, le voci nellalpStylematrice specificano lunghezze di trattini e spazi in unità logiche.Se
nPenStyleèPS_ALTERNATE, l'unità di stile viene ignorata e ogni altro pixel viene impostato.
Quando un'applicazione non richiede più una penna specifica, deve chiamare la CGdiObject::DeleteObject funzione membro o distruggere l'oggetto CPen in modo che la risorsa non sia più in uso. 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);
CPen::CreatePenIndirect
Inizializza una penna con lo stile, la larghezza e il colore specificati nella struttura a lpLogPencui punta .
BOOL CreatePenIndirect(LPLOGPEN lpLogPen);
Parametri
lpLogPen
Punta alla struttura di Windows LOGPEN che contiene informazioni sulla penna.
Valore restituito
Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.
Osservazioni:
Le penne con una larghezza maggiore di 1 pixel devono avere sempre lo PS_NULLstile , PS_SOLIDo PS_INSIDEFRAME .
Se una penna ha lo PS_INSIDEFRAME stile e un colore che non corrisponde a un colore nella tabella colori logica, la penna viene disegnata con un colore dithered. Lo PS_INSIDEFRAME stile è identico a PS_SOLID se la larghezza della penna è minore o uguale a 1.
Esempio
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
Restituisce un puntatore a un CPen oggetto dato un handle a un oggetto penna GDI di Windows.
static CPen* PASCAL FromHandle(HPEN hPen);
Parametri
hPen
HPEN handle per la penna GDI di Windows.
Valore restituito
Puntatore a un CPen oggetto se ha esito positivo; in caso contrario NULL, .
Osservazioni:
Se un CPen oggetto non è collegato all'handle, viene creato e collegato un oggetto temporaneo CPen . Questo oggetto temporaneo CPen è valido solo fino alla successiva volta che l'applicazione ha tempo di inattività nel ciclo di eventi, in cui vengono eliminati tutti gli oggetti grafici temporanei. In altre parole, l'oggetto temporaneo è valido solo durante l'elaborazione di un messaggio di finestra.
Esempio
// Convert an HPEN to a CPen*.
// NOTE: hPen is a valid pen handle.
CPen* pPen = CPen::FromHandle(hPen);
CPen::GetExtLogPen
Ottiene una EXTLOGPEN struttura sottostante.
int GetExtLogPen(EXTLOGPEN* pLogPen);
Parametri
pLogPen
Punta a una EXTLOGPEN struttura che contiene informazioni sulla penna.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
La EXTLOGPEN struttura definisce gli attributi di stile, larghezza e pennello di una penna. Ad esempio, chiamare GetExtLogPen per corrispondere allo stile specifico di una penna.
Per informazioni sugli attributi della penna, vedere gli argomenti seguenti in Windows SDK:
Esempio
L'esempio di codice seguente illustra la chiamata GetExtLogPen per recuperare gli attributi di una penna e quindi creare una nuova penna cosmetica con lo stesso colore.
EXTLOGPEN extlogpen;
penExisting.GetExtLogPen(&extlogpen);
CPen penOther;
LOGBRUSH LogBrush = { extlogpen.elpBrushStyle, extlogpen.elpColor,
extlogpen.elpHatch };
penOther.CreatePen(PS_COSMETIC, 1, &LogBrush);
CPen::GetLogPen
Ottiene una LOGPEN struttura sottostante.
int GetLogPen(LOGPEN* pLogPen);
Parametri
pLogPen
Punta a una LOGPEN struttura per contenere informazioni sulla penna.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
La LOGPEN struttura definisce lo stile, il colore e il motivo di una penna.
Ad esempio, chiamare GetLogPen per corrispondere allo stile specifico della penna.
Per informazioni sugli attributi della penna, vedere gli argomenti seguenti in Windows SDK:
Esempio
Nell'esempio di codice seguente viene illustrata la chiamata GetLogPen per recuperare un carattere penna e quindi creare una nuova penna a tinta unita con lo stesso colore.
LOGPEN logpen;
penExisting.GetLogPen(&logpen);
CPen penOther(PS_SOLID, 0, logpen.lopnColor);
CPen::operator HPEN
Ottiene l'handle GDI di Windows associato dell'oggetto CPen .
operator HPEN() const;
Valore restituito
In caso di esito positivo, un handle per l'oggetto GDI di Windows rappresentato dall'oggetto CPen ; in caso contrario NULL, .
Osservazioni:
Questo operatore è un operatore di cast che supporta l'uso diretto di un HPEN oggetto .
Per altre informazioni sull'uso di oggetti grafici, vedere l'articolo Oggetti grafici in Windows SDK.
Esempio
// 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;