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 CPen
hakkında daha fazla bilgi için bkz . Grafik Nesneleri.
Devralma Hiyerarşisi
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_INSIDEFRAME
Sınırlayıcı bir dikdörtgen (örneğin, , , ,Pie
veChord
üye işlevleri) belirten Windows GDI çıkış işlevleri tarafından üretilen kapalı şekillerinEllipse
çerçevesi içine bir çizgi çizenRoundRect
bir 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çinnPenStyle
aş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ırSetMiterLimit
. 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. isenPenStyle
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_USERSTYLE
bu 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 , CreatePenIndirect
veya CreateStockObject
üye işlevleriyle CreatePen
baş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
CreatePen
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 olur.İkinci sürümü
CreatePen
için isenPenStyle
PS_GEOMETRIC
, genişlik mantıksal birimler halinde verilir. isenPenStyle
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_USERSTYLE
bu 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_SOLID
veya PS_INSIDEFRAME
stiline PS_NULL
sahip 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_USERSTYLE
isePS_COSMETIC
nPenStyle
, dizidekilpStyle
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_USERSTYLE
isePS_GEOMETRIC
nPenStyle
, dizidekilpStyle
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 lpLogPen
edilen 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_SOLID
veya PS_INSIDEFRAME
stiline PS_NULL
sahip 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;