Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.
Egy Windows grafikuseszköz-kezelőfelület (GDI) toll beágyazása.
Szemantika
class CPen : public CGdiObject
Tagok
Nyilvános konstruktorok
| Név | Description |
|---|---|
CPen::CPen |
Egy CPen objektumot hoz létre. |
Nyilvános metódusok
| Név | Description |
|---|---|
CPen::CreatePen |
Létrehoz egy logikai kozmetikai vagy geometriai tollat a megadott stílus, szélesség és ecset attribútumokkal, és csatolja az CPen objektumhoz. |
CPen::CreatePenIndirect |
Létrehoz egy tollat a szerkezetben LOGPEN megadott stílussal, szélességgel és színnel, és csatolja az CPen objektumhoz. |
CPen::FromHandle |
Egy windowsos HPEN-hez CPen adott objektumra mutató mutatót ad vissza. |
CPen::GetExtLogPen |
Lekéri a mögöttes struktúrát EXTLOGPEN . |
CPen::GetLogPen |
Lekéri a mögöttes struktúrát LOGPEN . |
Nyilvános operátorok
| Név | Description |
|---|---|
CPen::operator HPEN |
Az objektumhoz csatolt Windows-leírót CPen adja vissza. |
Megjegyzések
A használatról CPentovábbi információt a Grafikus objektumok című témakörben talál.
Öröklési hierarchia
CPen
Requirements
Fejléc:afxwin.h
CPen::CPen
Egy CPen objektumot hoz létre.
CPen();
CPen(
int nPenStyle,
int nWidth,
COLORREF crColor);
CPen(
int nPenStyle,
int nWidth,
const LOGBRUSH* pLogBrush,
int nStyleCount = 0,
const DWORD* lpStyle = NULL);
Paraméterek
nPenStyle
Megadja a tollstílust. Ez a paraméter a konstruktor első verziójában az alábbi értékek egyike lehet:
PS_SOLIDEgyszínű tollat hoz létre.PS_DASHSzaggatott tollat hoz létre. Csak akkor érvényes, ha a toll szélessége 1 vagy kevesebb, eszközegységekben.PS_DOTPontozott tollat hoz létre. Csak akkor érvényes, ha a toll szélessége 1 vagy kevesebb, eszközegységekben.PS_DASHDOTVáltakozó kötőjelekkel és pontokkal rendelkező tollat hoz létre. Csak akkor érvényes, ha a toll szélessége 1 vagy kevesebb, eszközegységekben.PS_DASHDOTDOTVáltakozó kötőjelekkel és dupla pontokkal rendelkező tollat hoz létre. Csak akkor érvényes, ha a toll szélessége 1 vagy kevesebb, eszközegységekben.PS_NULLNull tollat hoz létre.PS_INSIDEFRAMELétrehoz egy tollat, amely egy vonalat rajzol a Windows GDI kimeneti függvényei által létrehozott zárt alakzatok keretébe, amelyek egy határoló téglalapot (például aEllipse, ,Rectangle,RoundRect,PieésChordtagfüggvényeket) határoznak meg. Ha ezt a stílust olyan Windows GDI kimeneti függvényekkel használja, amelyek nem határoznak meg határoló téglalapot (például tagfüggvénytLineTo), a toll rajzterületét nem korlátozza keret.
A konstruktor második verziója a típus, a stílus, a zárókorlát és az CPen illesztés attribútumainak kombinációját adja meg. Az egyes kategóriák értékeit a bitenkénti "vagy" (|) operátorral kell kombinálni. A toll típusa a következő értékek egyike lehet:
PS_GEOMETRICGeometriai tollat hoz létre.PS_COSMETICLétrehoz egy kozmetikai tollat.A konstruktor második verziója a
CPenkövetkező tollstílusokat adja hozzá a következőhöznPenStyle:PS_ALTERNATELétrehoz egy tollat, amely minden más képpontot beállít. (Ez a stílus csak kozmetikai tollakra alkalmazható.)PS_USERSTYLELétrehoz egy tollat, amely a felhasználó által megadott stílustömböt használja.A záró sapka a következő értékek egyike lehet:
PS_ENDCAP_ROUNDA zárósapkák kerekek.PS_ENDCAP_SQUAREA zárósapkák négyzet alakúak.PS_ENDCAP_FLATA zárósapkák laposak.Az illesztés az alábbi értékek egyike lehet:
PS_JOIN_BEVELAz illesztések fazetták.PS_JOIN_MITERAz illesztések akkor lesznek kisebbek, ha a függvény általSetMiterLimitbeállított jelenlegi korláton belül vannak. Ha az illesztés túllépi ezt a korlátot, akkor a rendszer be van véve.PS_JOIN_ROUNDAz illesztések kerekek.
nWidth
Megadja a toll szélességét.
A konstruktor első verziójában a 0 értéket a rendszer az 1 értékhez hasonlóan kezeli, azzal a kivételrel, hogy a szélességet nem befolyásolják a toll által használt Grafikus objektumra vonatkozó méretezési átalakítási műveletek; a szélesség mindig 1 képpont lesz.
A konstruktor második verziójához , ha
nPenStyleigenPS_GEOMETRIC, a szélesség logikai egységekben van megadva. HanPenStyleigenPS_COSMETIC, a szélességet 1 értékre kell állítani.
crColor
A toll RGB-színét tartalmazza.
pLogBrush
Egy struktúrára LOGBRUSH mutat. Ha nPenStyle igen PS_COSMETIC, a lbColorLOGBRUSH struktúra tagja a toll színét adja meg, a lbStyle szerkezet tagját LOGBRUSH pedig a következőre BS_SOLIDkell állítani. Ha nPenStyle igen PS_GEOMETRIC, az összes tagot használni kell a toll ecsetattribútumainak megadásához.
nStyleCount
A tömb hosszát adja meg duplaszós egységekben lpStyle . Ennek az értéknek nullának kell lennie, ha nPenStyle nem PS_USERSTYLE.
lpStyle
Duplaszó értékeket tartalmazó tömbre mutat. Az első érték egy felhasználó által definiált stílusban adja meg az első kötőjel hosszát, a második pedig az első szóköz hosszát stb. Ennek a mutatónak akkor kell lennie NULL , ha nPenStyle nem PS_USERSTYLE.
Megjegyzések
Ha argumentumok nélkül használja a konstruktort, inicializálnia kell az eredményként kapott CPen objektumot az CreatePen, CreatePenIndirectvagy CreateStockObject tagfüggvényekkel.
Ha az argumentumokat tartalmazó konstruktort használja, akkor nincs szükség további inicializálásra. Az argumentumokkal rendelkező konstruktor kivételt okozhat, ha hiba történik, míg az argumentumokat nem tartalmazó konstruktor mindig sikeres lesz.
Example
// 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
Létrehoz egy logikai kozmetikai vagy geometriai tollat a megadott stílus, szélesség és ecset attribútumokkal, és csatolja az CPen objektumhoz.
BOOL CreatePen(
int nPenStyle,
int nWidth,
COLORREF crColor);
BOOL CreatePen(
int nPenStyle,
int nWidth,
const LOGBRUSH* pLogBrush,
int nStyleCount = 0,
const DWORD* lpStyle = NULL);
Paraméterek
nPenStyle
Megadja a toll stílusát. A lehetséges értékek listáját a nPenStyle konstruktor paraméterében CPen találja.
nWidth
Megadja a toll szélességét.
A program az első verzió
CreatePenesetében a 0 értéket az 1-es értékhez hasonlóan kezeli, azzal a kivételrel, hogy a szélességet nem érintik a toll által használt grafikus objektumra vonatkozó méretezési átalakítási műveletek, a szélesség mindig 1 képpont lesz.Ha igen
PS_GEOMETRIC, a második verzióCreatePennPenStyleesetében a szélesség logikai egységekben van megadva. HanPenStyleigenPS_COSMETIC, a szélességet 1 értékre kell állítani.
crColor
A toll RGB-színét tartalmazza.
pLogBrush
Egy struktúrára LOGBRUSH mutat. Ha nPenStyle igen PS_COSMETIC, a lbColorLOGBRUSH struktúra tagja a toll színét adja meg, a lbStyle szerkezet tagját LOGBRUSH pedig a következőre BS_SOLIDkell állítani. Ha nPenStyle igen PS_GEOMETRIC, az összes tagot használni kell a toll ecsetattribútumainak megadásához.
nStyleCount
A tömb hosszát adja meg duplaszós egységekben lpStyle . Ennek az értéknek nullának kell lennie, ha nPenStyle nem PS_USERSTYLE.
lpStyle
Duplaszó értékeket tartalmazó tömbre mutat. Az első érték egy felhasználó által definiált stílusban adja meg az első kötőjel hosszát, a második pedig az első szóköz hosszát stb. Ennek a mutatónak akkor kell lennie NULL , ha nPenStyle nem PS_USERSTYLE.
Visszaadott érték
Sikertelen, ha sikeres, vagy nulla, ha a metódus sikertelen.
Megjegyzések
Az első verzió CreatePen inicializál egy tollat a megadott stílussal, szélességgel és színnel. A toll később bármely eszközkörnyezet aktuális tollaként kiválasztható.
Az 1 képpontnál nagyobb szélességű tollaknak mindig rendelkezniük kell az , PS_SOLIDvagy PS_INSIDEFRAME a PS_NULLstílussal.
Ha egy PS_INSIDEFRAME toll stílusa és színe nem egyezik meg a logikai színtáblában szereplő színekkel, a tollat elválasztó színnel rajzolja meg. A PS_SOLID tollstílus nem használható színezett toll létrehozásához. A stílus PS_INSIDEFRAME megegyezik, PS_SOLID ha a toll szélessége kisebb vagy egyenlő 1-nél.
A második verzió CreatePen inicializál egy logikai kozmetikai vagy geometriai tollat, amely a megadott stílust, szélességet és ecsetattribútumokat használja. A kozmetikai toll szélessége mindig 1; a geometriai toll szélessége mindig a világ mértékegységeiben van megadva. Miután egy alkalmazás létrehoz egy logikai tollat, a függvény meghívásával kiválaszthatja a tollat egy CDC::SelectObject eszközkörnyezetbe. Miután kiválasztotta a tollat egy eszközkörnyezetbe, vonalak és görbék rajzolására használható.
Ha
nPenStyleigenPS_COSMETIC,PS_USERSTYLEakkor a tömb bejegyzései alpStylekötőjelek hosszát és a stílusegységekben lévő szóközöket határozzák meg. A stílusegységet az az eszköz határozza meg, amelyben a toll egy vonal rajzolására szolgál.Ha
nPenStyleigenPS_GEOMETRIC,PS_USERSTYLEakkor a tömb bejegyzései alpStylekötőjelek és a szóközök hosszát határozzák meg logikai egységekben.Ha
nPenStyleigenPS_ALTERNATE, a stílusegység figyelmen kívül lesz hagyva, és minden más képpont be van állítva.
Ha egy alkalmazásnak már nincs szüksége egy adott tollra, meg kell hívnia a CGdiObject::DeleteObject tagfüggvényt, vagy meg kell semmisítenie az CPen objektumot, hogy az erőforrás már ne legyen használatban. Az alkalmazásnak nem szabad törölnie egy tollat, ha a toll ki van jelölve egy eszközkörnyezetben.
Example
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
Inicializál egy tollat, amely a szerkezetben megadott stílust, szélességet és színt tartalmaz lpLogPen.
BOOL CreatePenIndirect(LPLOGPEN lpLogPen);
Paraméterek
lpLogPen
A toll adatait tartalmazó Windows-struktúrára LOGPEN mutat.
Visszaadott érték
Nonzero, ha a függvény sikeres; egyéb esetben 0.
Megjegyzések
Az 1 képpontnál nagyobb szélességű tollaknak mindig rendelkezniük kell az , PS_SOLIDvagy PS_INSIDEFRAME a PS_NULLstílussal.
Ha egy PS_INSIDEFRAME toll stílusa és színe nem egyezik meg a logikai színtáblában szereplő színekkel, a tollat elválasztó színnel rajzolja meg. A PS_INSIDEFRAME stílus megegyezik, PS_SOLID ha a toll szélessége kisebb vagy egyenlő 1-nél.
Example
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
Egy mutatót ad vissza egy CPen windowsos GDI-tollobjektumnak adott fogóponthoz.
static CPen* PASCAL FromHandle(HPEN hPen);
Paraméterek
hPen
HPEN fogópontot a Windows GDI-tollhoz.
Visszaadott érték
Az objektumra mutató CPen mutató, ha sikeres; ellenkező esetben NULL.
Megjegyzések
Ha egy CPen objektum nincs csatolva a leíróhoz, egy ideiglenes CPen objektum jön létre és csatolva. Ez az ideiglenes CPen objektum csak addig érvényes, amíg az alkalmazás következő alkalommal nem rendelkezik tétlenségi idővel az eseményhurkában, és ekkor az összes ideiglenes grafikus objektum törlődik. Más szóval az ideiglenes objektum csak egy ablaküzenet feldolgozása során érvényes.
Example
// Convert an HPEN to a CPen*.
// NOTE: hPen is a valid pen handle.
CPen* pPen = CPen::FromHandle(hPen);
CPen::GetExtLogPen
Lekéri a mögöttes struktúrát EXTLOGPEN .
int GetExtLogPen(EXTLOGPEN* pLogPen);
Paraméterek
pLogPen
Egy olyan struktúrára EXTLOGPEN mutat, amely információkat tartalmaz a tollról.
Visszaadott érték
Nonzero, ha sikeres; egyéb esetben 0.
Megjegyzések
A EXTLOGPEN struktúra meghatározza a toll stílusát, szélességét és ecsettulajdonságait. Például egy toll adott stílusának megfelelő hívás GetExtLogPen .
A tollattribútumokkal kapcsolatos információkért tekintse meg a Windows SDK következő témaköreit:
Example
Az alábbi példakód bemutatja a toll attribútumainak lekérésére való meghívást GetExtLogPen , majd egy új, azonos színű kozmetikai toll létrehozását.
EXTLOGPEN extlogpen;
penExisting.GetExtLogPen(&extlogpen);
CPen penOther;
LOGBRUSH LogBrush = { extlogpen.elpBrushStyle, extlogpen.elpColor,
extlogpen.elpHatch };
penOther.CreatePen(PS_COSMETIC, 1, &LogBrush);
CPen::GetLogPen
Lekéri a mögöttes struktúrát LOGPEN .
int GetLogPen(LOGPEN* pLogPen);
Paraméterek
pLogPen
Egy olyan struktúrára mutat, LOGPEN amely információkat tartalmaz a tollról.
Visszaadott érték
Nonzero, ha sikeres; egyéb esetben 0.
Megjegyzések
A LOGPEN struktúra meghatározza a toll stílusát, színét és mintázatát.
Például az adott tollstílusnak megfelelő hívás GetLogPen .
A tollattribútumokkal kapcsolatos információkért tekintse meg a Windows SDK következő témaköreit:
Example
Az alábbi példakód bemutatja a toll karakter lekérésére való meghívást GetLogPen , majd egy új, egyszínű, azonos színű toll létrehozását.
LOGPEN logpen;
penExisting.GetLogPen(&logpen);
CPen penOther(PS_SOLID, 0, logpen.lopnColor);
CPen::operator HPEN
Lekéri az objektum csatolt Windows GDI-leíróját CPen .
operator HPEN() const;
Visszaadott érték
Ha sikeres, az objektum által CPen képviselt Windows GDI-objektum leírója; ellenkező esetben NULL.
Megjegyzések
Ez az operátor egy öntvény operátor, amely támogatja az HPEN objektumok közvetlen használatát.
A grafikus objektumok használatáról további információt a Grafikus objektumok a Windows SDK-ban című cikkben talál.
Example
// 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;