CPen Sınıf

Windows grafik cihaz arabirimi (GDI) kalemini kapsüller.

Sözdizimi

class CPen : public CGdiObject

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CPen::CPen Bir CPen nesne oluşturur.

Genel Yöntemler

Veri Akışı Adı Açıklama
CPen::CreatePen Belirtilen stil, genişlik ve fırça özniteliklerine sahip mantıksal bir kozmetik veya geometrik kalem oluşturur ve nesneye CPen ekler.
CPen::CreatePenIndirect Bir yapıda verilen stil, genişlik ve renge sahip bir LOGPEN kalem oluşturur ve bunu nesneye CPen ekler.
CPen::FromHandle Windows HPEN verildiğinde nesneye CPen bir işaretçi döndürür.
CPen::GetExtLogPen Temel alınan bir EXTLOGPEN yapıyı alır.
CPen::GetLogPen Temel alınan bir LOGPEN yapıyı alır.

Ortak İşleçler

Veri Akışı Adı Açıklama
CPen::operator HPEN Nesneye bağlı Windows tutamacını CPen döndürür.

Açıklamalar

kullanma CPenhakkında daha fazla bilgi için bkz . Grafik Nesneleri.

Devralma Hiyerarşisi

CObject

CGdiObject

CPen

Gereksinimler

Üstbilgi: afxwin.h

CPen::CPen

Bir CPen nesne oluşturur.

CPen();

CPen(
    int nPenStyle,
    int nWidth,
    COLORREF crColor);

CPen(
    int nPenStyle,
    int nWidth,
    const LOGBRUSH* pLogBrush,
    int nStyleCount = 0,
    const DWORD* lpStyle = NULL);

Parametreler

nPenStyle
Kalem stilini belirtir. Oluşturucunun ilk sürümündeki bu parametre aşağıdaki değerlerden biri olabilir:

  • PS_SOLID Düz kalem oluşturur.

  • PS_DASH Kesikli kalem oluşturur. Yalnızca kalem genişliği cihaz birimlerinde 1 veya daha az olduğunda geçerlidir.

  • PS_DOT Noktalı kalem oluşturur. Yalnızca kalem genişliği cihaz birimlerinde 1 veya daha az olduğunda geçerlidir.

  • PS_DASHDOT Değişen tireler ve noktalar içeren bir kalem oluşturur. Yalnızca kalem genişliği cihaz birimlerinde 1 veya daha az olduğunda geçerlidir.

  • PS_DASHDOTDOT Alternatif çizgili ve çift noktalı bir kalem oluşturur. Yalnızca kalem genişliği cihaz birimlerinde 1 veya daha az olduğunda geçerlidir.

  • PS_NULL Null kalem oluşturur.

  • PS_INSIDEFRAMESınırlayıcı bir dikdörtgen (örneğin, , , , Pieve Chord üye işlevleri) belirten Windows GDI çıkış işlevleri tarafından üretilen kapalı şekillerin Ellipseçerçevesi içine bir çizgi çizen RoundRectbir kalem oluşturur. Rectangle Bu stil sınırlayıcı dikdörtgen (örneğin, üye işlevi) belirtmeyen Windows GDI çıkış işlevleriyle kullanıldığında, LineTo kalemin çizim alanı çerçeveyle sınırlı değildir.

Oluşturucunun CPen ikinci sürümü tür, stil, uç üst sınır ve birleştirme özniteliklerinin bir bileşimini belirtir. Her kategorideki değerler bit düzeyinde "veya" (|) işleci kullanılarak birleştirilmelidir. Kalem türü aşağıdaki değerlerden biri olabilir:

  • PS_GEOMETRIC Geometrik kalem oluşturur.

  • PS_COSMETIC Kozmetik kalem oluşturur.

    Oluşturucunun CPen ikinci sürümü için nPenStyleaşağıdaki kalem stillerini ekler:

  • PS_ALTERNATE Diğer pikselleri ayarlayan bir kalem oluşturur. (Bu stil yalnızca kozmetik kalemler için geçerlidir.)

  • PS_USERSTYLE Kullanıcı tarafından sağlanan stil dizisini kullanan bir kalem oluşturur.

    Uç üst sınır aşağıdaki değerlerden biri olabilir:

  • PS_ENDCAP_ROUND Uç büyük harfler yuvarlaktır.

  • PS_ENDCAP_SQUARE Uç caps karedir.

  • PS_ENDCAP_FLAT Uç kapaklar düz.

    Birleştirme aşağıdaki değerlerden biri olabilir:

  • PS_JOIN_BEVEL Birleştirmeler eğimli.

  • PS_JOIN_MITER Birleşimler, işlev tarafından ayarlanan geçerli sınır içinde olduğunda caydırılır SetMiterLimit . Birleştirme bu sınırı aşarsa eğimli olur.

  • PS_JOIN_ROUND Birleşimler yuvarlaktır.

nWidth
Kalemin genişliğini belirtir.

  • Oluşturucunun ilk sürümünde, 0 değeri 1 değerine benzer şekilde ele alınacaktır, ancak genişliği kalemin kullanıldığı Grafik nesnesi için geçerli olan ölçek dönüştürme işlemlerinden etkilenmez; genişlik her zaman 1 piksel olacaktır.

  • Oluşturucunun ikinci sürümü için ise nPenStyle PS_GEOMETRIC, genişlik mantıksal birimler halinde verilir. ise nPenStyle PS_COSMETIC, genişlik 1 olarak ayarlanmalıdır.

crColor
Kalem için RGB rengi içerir.

pLogBrush
Bir LOGBRUSH yapıyı gösterir. isenPenStyle, yapının üyesi LOGBRUSH kalemin rengini belirtir ve lbStyle yapı üyesi LOGBRUSH olarak ayarlanmalıdırBS_SOLID.lbColor PS_COSMETIC ise nPenStyle PS_GEOMETRIC, kalemin fırça özniteliklerini belirtmek için tüm üyeler kullanılmalıdır.

nStyleCount
Dizinin uzunluğunu çift kelimelik birimler lpStyle halinde belirtir. değilse nPenStyle PS_USERSTYLEbu değer sıfır olmalıdır.

lpStyle
Çift kelime değerleri dizisine işaret eder. İlk değer kullanıcı tanımlı stildeki ilk tirenin uzunluğunu, ikinci değer ise ilk boşluğun uzunluğunu belirtir ve bu şekilde devam eder. Bu işaretçi değilse olmalıdır NULL nPenStyle PS_USERSTYLE.

Açıklamalar

Oluşturucuyu bağımsız değişken olmadan kullanırsanız, sonuçta CPen elde edilen nesneyi , CreatePenIndirectveya CreateStockObject üye işlevleriyle CreatePenbaşlatmanız gerekir.

Bağımsız değişkenleri alan oluşturucuyu kullanırsanız, başka başlatma gerekmez. Bağımsız değişkenlere sahip oluşturucu hatalarla karşılaşılırsa bir özel durum oluşturabilir, ancak bağımsız değişken içermeyen oluşturucu her zaman başarılı olur.

Örnek

// 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

Belirtilen stil, genişlik ve fırça özniteliklerine sahip mantıksal bir kozmetik veya geometrik kalem oluşturur ve nesneye CPen ekler.

BOOL CreatePen(
    int nPenStyle,
    int nWidth,
    COLORREF crColor);

BOOL CreatePen(
    int nPenStyle,
    int nWidth,
    const LOGBRUSH* pLogBrush,
    int nStyleCount = 0,
    const DWORD* lpStyle = NULL);

Parametreler

nPenStyle
Kalemin stilini belirtir. Olası değerlerin listesi için oluşturucudaki parametresine CPen bakınnPenStyle.

nWidth
Kalemin genişliğini belirtir.

  • öğesinin CreatePenilk sürümünde, 0 değeri 1 değerine benzer şekilde ele alınacaktır, ancak genişliği kalemin kullanıldığı Grafik nesnesi için geçerli olan ölçek dönüştürme işlemlerinden etkilenmez; genişlik her zaman 1 piksel olur.

  • İkinci sürümü CreatePeniçin ise nPenStyle PS_GEOMETRIC, genişlik mantıksal birimler halinde verilir. ise nPenStyle PS_COSMETIC, genişlik 1 olarak ayarlanmalıdır.

crColor
Kalem için RGB rengi içerir.

pLogBrush
Bir LOGBRUSH yapıyı gösterir. isenPenStyle, yapının üyesi LOGBRUSH kalemin rengini belirtir ve lbStyle yapı üyesi LOGBRUSH olarak ayarlanmalıdırBS_SOLID.lbColor PS_COSMETIC ise nPenStyle PS_GEOMETRIC, kalemin fırça özniteliklerini belirtmek için tüm üyeler kullanılmalıdır.

nStyleCount
Dizinin uzunluğunu çift kelimelik birimler lpStyle halinde belirtir. değilse nPenStyle PS_USERSTYLEbu değer sıfır olmalıdır.

lpStyle
Çift kelime değerleri dizisine işaret eder. İlk değer kullanıcı tanımlı stildeki ilk tirenin uzunluğunu, ikinci değer ise ilk boşluğun uzunluğunu belirtir ve bu şekilde devam eder. Bu işaretçi değilse olmalıdır NULL nPenStyle PS_USERSTYLE.

Dönüş Değeri

Başarılı olursa sıfır olmayan veya yöntem başarısız olursa sıfır.

Açıklamalar

öğesinin CreatePen ilk sürümü, belirtilen stil, genişlik ve renge sahip bir kalem başlatır. Kalem daha sonra herhangi bir cihaz bağlamı için geçerli kalem olarak seçilebilir.

Genişliği 1 pikselden büyük kalemler her zaman , PS_SOLIDveya PS_INSIDEFRAME stiline PS_NULLsahip olmalıdır.

Kalemin PS_INSIDEFRAME stili ve rengi mantıksal renk tablosundaki bir renkle eşleşmeyen bir rengi varsa, kalem titrek bir renkle çizilir. Kalem PS_SOLID stili, titrek renkle kalem oluşturmak için kullanılamaz. Kalem genişliği 1'den PS_SOLID küçük veya 1'e eşitse stil PS_INSIDEFRAME ile aynıdır.

İkinci sürümü CreatePen , belirtilen stil, genişlik ve fırça özniteliklerine sahip mantıksal bir kozmetik veya geometrik kalem başlatır. Kozmetik kalemin genişliği her zaman 1'dir; geometrik kalemin genişliği her zaman dünya birimlerinde belirtilir. Bir uygulama mantıksal kalem oluşturduğunda, işlevi çağırarak CDC::SelectObject bu kalemi bir cihaz bağlamında seçebilir. Bir kalem bir cihaz bağlamında seçildikten sonra çizgileri ve eğrileri çizmek için kullanılabilir.

  • ve PS_USERSTYLEise PS_COSMETIC nPenStyle, dizideki lpStyle girdiler stil birimlerindeki tire ve boşluk uzunluklarını belirtir. Stil birimi, kalemin çizgi çizmek için kullanıldığı cihaz tarafından tanımlanır.

  • ve PS_USERSTYLEise PS_GEOMETRIC nPenStyle, dizideki lpStyle girdiler mantıksal birimlerdeki tire ve boşluk uzunluklarını belirtir.

  • ise nPenStyle PS_ALTERNATE, stil birimi yoksayılır ve diğer tüm pikseller ayarlanır.

Bir uygulama artık belirli bir kaleme ihtiyaç duymadığında, üye işlevini çağırmalı CGdiObject::DeleteObject veya kaynağın CPen artık kullanımda olmaması için nesneyi yok etmelidir. Uygulama, cihaz bağlamında kalem seçildiğinde kalemi silmemelidir.

Örnek

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

tarafından işaret lpLogPenedilen yapıda verilen stil, genişlik ve renge sahip bir kalem başlatır.

BOOL CreatePenIndirect(LPLOGPEN lpLogPen);

Parametreler

lpLogPen
Kalem hakkında bilgi içeren Windows LOGPEN yapısını gösterir.

Dönüş Değeri

İşlev başarılı olursa sıfır dışında bir değer, aksi durumda 0.

Açıklamalar

Genişliği 1 pikselden büyük kalemler her zaman , PS_SOLIDveya PS_INSIDEFRAME stiline PS_NULLsahip olmalıdır.

Kalemin PS_INSIDEFRAME stili ve rengi mantıksal renk tablosundaki bir renkle eşleşmeyen bir rengi varsa, kalem titrek bir renkle çizilir. Kalem PS_INSIDEFRAME genişliği 1'den PS_SOLID küçük veya 1'e eşitse stil ile aynıdır.

Örnek

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

Windows GDI kalem nesnesine CPen tanıtıcı verilen bir nesneye işaretçi döndürür.

static CPen* PASCAL FromHandle(HPEN hPen);

Parametreler

hPen
HPEN Windows GDI kalemini tutamacı.

Dönüş Değeri

Başarılı olursa nesne CPen işaretçisi; aksi takdirde NULL.

Açıklamalar

Bir CPen nesne tanıtıcıya bağlı değilse, geçici CPen bir nesne oluşturulur ve eklenir. Bu geçici CPen nesne, yalnızca uygulamanın olay döngüsünde boşta kalma süresine sahip olduğu ve tüm geçici grafik nesnelerinin silindiği bir sonraki zamana kadar geçerlidir. Başka bir deyişle, geçici nesne yalnızca bir pencere iletisinin işlenmesi sırasında geçerlidir.

Örnek

// Convert an HPEN to a CPen*.
// NOTE: hPen is a valid pen handle.
CPen* pPen = CPen::FromHandle(hPen);

CPen::GetExtLogPen

Temel alınan bir EXTLOGPEN yapıyı alır.

int GetExtLogPen(EXTLOGPEN* pLogPen);

Parametreler

pLogPen
Kalem hakkında bilgi içeren bir EXTLOGPEN yapıyı gösterir.

Dönüş Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Yapı, EXTLOGPEN kalemin stil, genişlik ve fırça özniteliklerini tanımlar. Örneğin, bir kalemin belirli stiliyle eşleştirmek için çağrısında GetExtLogPen bulunur.

Kalem öznitelikleri hakkında bilgi için Windows SDK'sında aşağıdaki konulara bakın:

Örnek

Aşağıdaki kod örneği, bir kalemin özniteliklerini almak ve ardından aynı renge sahip yeni bir kozmetik kalem oluşturmak için çağrıyı GetExtLogPen gösterir.

EXTLOGPEN extlogpen;
penExisting.GetExtLogPen(&extlogpen);
CPen penOther;
LOGBRUSH LogBrush = { extlogpen.elpBrushStyle, extlogpen.elpColor,
   extlogpen.elpHatch };
penOther.CreatePen(PS_COSMETIC, 1, &LogBrush);

CPen::GetLogPen

Temel alınan bir LOGPEN yapıyı alır.

int GetLogPen(LOGPEN* pLogPen);

Parametreler

pLogPen
Kalem hakkında bilgi içeren bir LOGPEN yapıyı gösterir.

Dönüş Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Yapı LOGPEN , kalemin stilini, rengini ve desenini tanımlar.

Örneğin, kalemin belirli stiliyle eşleşmesi için çağrısında GetLogPen bulunur.

Kalem öznitelikleri hakkında bilgi için Windows SDK'sında aşağıdaki konulara bakın:

Örnek

Aşağıdaki kod örneği, bir kalem karakteri almak ve sonra aynı renge sahip yeni, düz bir kalem oluşturmak için çağrıyı GetLogPen gösterir.

LOGPEN logpen;
penExisting.GetLogPen(&logpen);
CPen penOther(PS_SOLID, 0, logpen.lopnColor);

CPen::operator HPEN

Nesnenin ekli Windows GDI tutamacını CPen alır.

operator HPEN() const;

Dönüş Değeri

Başarılı olursa, nesnesi tarafından temsil edilen Windows GDI nesnesine bir CPen tanıtıcı; aksi takdirde NULL.

Açıklamalar

Bu işleç, bir nesnenin doğrudan kullanımını destekleyen bir HPEN atama işlecidir.

Grafik nesnelerini kullanma hakkında daha fazla bilgi için Windows SDK'da Grafik Nesneleri makalesine bakın.

Örnek

// 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;

Ayrıca bkz.

CGdiObject Sınıf
Hiyerarşi Grafiği
CBrush Sınıf