Megosztás a következőn keresztül:


CPen osztály

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

CObject

CGdiObject

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_SOLID Egyszínű tollat hoz létre.

  • PS_DASH Szaggatott tollat hoz létre. Csak akkor érvényes, ha a toll szélessége 1 vagy kevesebb, eszközegységekben.

  • PS_DOT Pontozott tollat hoz létre. Csak akkor érvényes, ha a toll szélessége 1 vagy kevesebb, eszközegységekben.

  • PS_DASHDOT Vá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_DASHDOTDOT Vá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_NULL Null tollat hoz létre.

  • PS_INSIDEFRAME Lé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 a Ellipse, , Rectangle, RoundRect, Pieés Chord tagfü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ényt LineTo ), 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_GEOMETRIC Geometriai tollat hoz létre.

  • PS_COSMETIC Létrehoz egy kozmetikai tollat.

    A konstruktor második verziója a CPen következő tollstílusokat adja hozzá a következőhöz nPenStyle:

  • PS_ALTERNATE Létrehoz egy tollat, amely minden más képpontot beállít. (Ez a stílus csak kozmetikai tollakra alkalmazható.)

  • PS_USERSTYLE Lé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_ROUND A zárósapkák kerekek.

  • PS_ENDCAP_SQUARE A zárósapkák négyzet alakúak.

  • PS_ENDCAP_FLAT A zárósapkák laposak.

    Az illesztés az alábbi értékek egyike lehet:

  • PS_JOIN_BEVEL Az illesztések fazetták.

  • PS_JOIN_MITER Az illesztések akkor lesznek kisebbek, ha a függvény által SetMiterLimit beá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_ROUND Az 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 nPenStyle igen PS_GEOMETRIC, a szélesség logikai egységekben van megadva. Ha nPenStyle igen PS_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 igenPS_GEOMETRIC, a második verzió CreatePennPenStyle esetében a szélesség logikai egységekben van megadva. Ha nPenStyle igen PS_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 nPenStyle igen PS_COSMETIC , PS_USERSTYLEakkor a tömb bejegyzései a lpStyle kö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 nPenStyle igen PS_GEOMETRIC , PS_USERSTYLEakkor a tömb bejegyzései a lpStyle kötőjelek és a szóközök hosszát határozzák meg logikai egységekben.

  • Ha nPenStyle igen PS_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;

Lásd még

CGdiObject osztály
hierarchiadiagram
CBrush osztály