CPen
Kelas
Merangkum pena antarmuka perangkat grafis (GDI) Windows.
Sintaks
class CPen : public CGdiObject
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CPen::CPen |
Membuat CPen objek. |
Metode Publik
Nama | Deskripsi |
---|---|
CPen::CreatePen |
Membuat pena kosmetik atau geometrik logis dengan gaya, lebar, dan atribut sikat yang ditentukan, dan melampirkannya ke CPen objek. |
CPen::CreatePenIndirect |
Membuat pena dengan gaya, lebar, dan warna yang LOGPEN diberikan dalam struktur, dan melampirkannya ke CPen objek. |
CPen::FromHandle |
Mengembalikan penunjuk ke CPen objek saat diberikan HPEN Windows. |
CPen::GetExtLogPen |
Mendapatkan struktur yang EXTLOGPEN mendasar. |
CPen::GetLogPen |
Mendapatkan struktur yang LOGPEN mendasar. |
Operator Publik
Nama | Deskripsi |
---|---|
CPen::operator HPEN |
Mengembalikan handel Windows yang dilampirkan ke CPen objek. |
Keterangan
Untuk informasi selengkapnya tentang menggunakan CPen
, lihat Objek Grafis.
Hierarki Warisan
CPen
Persyaratan
Header: afxwin.h
CPen::CPen
Membuat CPen
objek.
CPen();
CPen(
int nPenStyle,
int nWidth,
COLORREF crColor);
CPen(
int nPenStyle,
int nWidth,
const LOGBRUSH* pLogBrush,
int nStyleCount = 0,
const DWORD* lpStyle = NULL);
Parameter
nPenStyle
Menentukan gaya pena. Parameter ini dalam versi pertama konstruktor dapat menjadi salah satu nilai berikut:
PS_SOLID
Membuat pena yang solid.PS_DASH
Membuat pena putus-putus. Hanya berlaku ketika lebar pena adalah 1 atau kurang, dalam unit perangkat.PS_DOT
Membuat pena bertitik. Hanya berlaku ketika lebar pena adalah 1 atau kurang, dalam unit perangkat.PS_DASHDOT
Membuat pena dengan tanda hubung dan titik alternatif. Hanya berlaku ketika lebar pena adalah 1 atau kurang, dalam unit perangkat.PS_DASHDOTDOT
Membuat pena dengan tanda hubung alternatif dan titik ganda. Hanya berlaku ketika lebar pena adalah 1 atau kurang, dalam unit perangkat.PS_NULL
Membuat pena null.PS_INSIDEFRAME
Membuat pena yang menggambar garis di dalam bingkai bentuk tertutup yang dihasilkan oleh fungsi output GDI Windows yang menentukan persegi panjang pembatas (misalnya,Ellipse
fungsi anggota , ,Rectangle
RoundRect
,Pie
, danChord
). Ketika gaya ini digunakan dengan fungsi output GDI Windows yang tidak menentukan persegi panjang pembatas (misalnya,LineTo
fungsi anggota), area gambar pena tidak dibatasi oleh bingkai.
Versi CPen
kedua konstruktor menentukan kombinasi jenis, gaya, batas akhir, dan atribut gabungan. Nilai dari setiap kategori harus dikombinasikan dengan menggunakan operator "atau" (|
) bitwise. Jenis pena bisa menjadi salah satu nilai berikut:
PS_GEOMETRIC
Membuat pena geometris.PS_COSMETIC
Membuat pena kosmetik.Versi
CPen
kedua konstruktor menambahkan gaya pena berikut untuknPenStyle
:PS_ALTERNATE
Membuat pena yang mengatur setiap piksel lainnya. (Gaya ini hanya berlaku untuk pena kosmetik.)PS_USERSTYLE
Membuat pena yang menggunakan array gaya yang disediakan oleh pengguna.Batas akhir bisa menjadi salah satu nilai berikut:
PS_ENDCAP_ROUND
Batas akhir bulat.PS_ENDCAP_SQUARE
Batas akhir adalah persegi.PS_ENDCAP_FLAT
Tutup ujungnya datar.Gabungan bisa menjadi salah satu nilai berikut:
PS_JOIN_BEVEL
Gabungan dimiringkan.PS_JOIN_MITER
Gabungan bermigrasi ketika berada dalam batas saat ini yang ditetapkan olehSetMiterLimit
fungsi. Jika gabungan melebihi batas ini, gabungan akan dimiringkan.PS_JOIN_ROUND
Gabungan bulat.
nWidth
Menentukan lebar pena.
Untuk versi pertama konstruktor, nilai 0 akan diperlakukan mirip dengan nilai 1, kecuali bahwa lebar tidak akan terpengaruh oleh operasi transformasi skala yang berlaku untuk objek Grafis tempat pena digunakan; lebarnya akan selalu 1 piksel.
Untuk versi kedua konstruktor, jika
nPenStyle
adalahPS_GEOMETRIC
, lebar diberikan dalam unit logis. JikanPenStyle
adalahPS_COSMETIC
, lebar harus diatur ke 1.
crColor
Berisi warna RGB untuk pena.
pLogBrush
Menunjuk LOGBRUSH
ke struktur. Jika nPenStyle
adalah PS_COSMETIC
, lbColor
anggota LOGBRUSH
struktur menentukan warna pena dan lbStyle
anggota LOGBRUSH
struktur harus diatur ke BS_SOLID
. Jika nPenStyle
adalah PS_GEOMETRIC
, semua anggota harus digunakan untuk menentukan atribut kuas pena.
nStyleCount
Menentukan panjang, dalam unit kata ganda, dari lpStyle
array. Nilai ini harus nol jika nPenStyle
bukan PS_USERSTYLE
.
lpStyle
Menunjuk ke array nilai kata ganda. Nilai pertama menentukan panjang tanda hubung pertama dalam gaya yang ditentukan pengguna, nilai kedua menentukan panjang spasi pertama, dan sebagainya. Penunjuk ini harus NULL
jika nPenStyle
bukan PS_USERSTYLE
.
Keterangan
Jika Anda menggunakan konstruktor tanpa argumen, Anda harus menginisialisasi objek yang CPen
dihasilkan dengan CreatePen
fungsi anggota , CreatePenIndirect
, atau CreateStockObject
.
Jika Anda menggunakan konstruktor yang mengambil argumen, maka tidak ada inisialisasi lebih lanjut yang diperlukan. Konstruktor dengan argumen dapat melemparkan pengecualian jika kesalahan ditemui, sementara konstruktor tanpa argumen akan selalu berhasil.
Contoh
// 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
Membuat pena kosmetik atau geometrik logis dengan gaya, lebar, dan atribut sikat yang ditentukan, dan melampirkannya ke CPen
objek.
BOOL CreatePen(
int nPenStyle,
int nWidth,
COLORREF crColor);
BOOL CreatePen(
int nPenStyle,
int nWidth,
const LOGBRUSH* pLogBrush,
int nStyleCount = 0,
const DWORD* lpStyle = NULL);
Parameter
nPenStyle
Menentukan gaya untuk pena. Untuk daftar nilai yang mungkin, lihat nPenStyle
parameter di CPen
konstruktor.
nWidth
Menentukan lebar pena.
Untuk versi
CreatePen
pertama , nilai 0 akan diperlakukan mirip dengan nilai 1, kecuali bahwa lebar tidak akan terpengaruh oleh operasi transformasi skala yang berlaku untuk objek Grafis tempat pena digunakan; lebarnya akan selalu 1 piksel.Untuk versi kedua ,
CreatePen
jikanPenStyle
adalahPS_GEOMETRIC
, lebar diberikan dalam unit logis. JikanPenStyle
adalahPS_COSMETIC
, lebar harus diatur ke 1.
crColor
Berisi warna RGB untuk pena.
pLogBrush
Menunjuk LOGBRUSH
ke struktur. Jika nPenStyle
adalah PS_COSMETIC
, lbColor
anggota LOGBRUSH
struktur menentukan warna pena dan lbStyle
anggota LOGBRUSH
struktur harus diatur ke BS_SOLID
. Jika nPenStyle
adalah PS_GEOMETRIC
, semua anggota harus digunakan untuk menentukan atribut kuas pena.
nStyleCount
Menentukan panjang, dalam unit kata ganda, dari lpStyle
array. Nilai ini harus nol jika nPenStyle
bukan PS_USERSTYLE
.
lpStyle
Menunjuk ke array nilai kata ganda. Nilai pertama menentukan panjang tanda hubung pertama dalam gaya yang ditentukan pengguna, nilai kedua menentukan panjang spasi pertama, dan sebagainya. Penunjuk ini harus NULL
jika nPenStyle
bukan PS_USERSTYLE
.
Tampilkan Nilai
Bukan nol jika berhasil, atau nol jika metode gagal.
Keterangan
Versi CreatePen
pertama menginisialisasi pena dengan gaya, lebar, dan warna yang ditentukan. Pena kemudian dapat dipilih sebagai pena saat ini untuk konteks perangkat apa pun.
Pena yang memiliki lebar lebih besar dari 1 piksel harus selalu memiliki PS_NULL
gaya , , PS_SOLID
atau PS_INSIDEFRAME
.
Jika pena memiliki PS_INSIDEFRAME
gaya dan warna yang tidak cocok dengan warna dalam tabel warna logis, pena digambar dengan warna terlarut. Gaya PS_SOLID
pena tidak dapat digunakan untuk membuat pena dengan warna terlarut. Gaya PS_INSIDEFRAME
identik PS_SOLID
dengan jika lebar pena kurang dari atau sama dengan 1.
Versi CreatePen
kedua menginisialisasi pena kosmetik atau geometrik logis yang memiliki atribut gaya, lebar, dan sikat yang ditentukan. Lebar pena kosmetik selalu 1; lebar pena geometris selalu ditentukan dalam unit dunia. Setelah aplikasi membuat pena logis, aplikasi dapat memilih pena tersebut CDC::SelectObject
ke dalam konteks perangkat dengan memanggil fungsi . Setelah pena dipilih ke dalam konteks perangkat, pena dapat digunakan untuk menggambar garis dan kurva.
Jika
nPenStyle
adalahPS_COSMETIC
danPS_USERSTYLE
, entri dalamlpStyle
array menentukan panjang tanda hubung dan spasi dalam unit gaya. Unit gaya didefinisikan oleh perangkat tempat pena digunakan untuk menggambar garis.Jika
nPenStyle
adalahPS_GEOMETRIC
danPS_USERSTYLE
, entri dalamlpStyle
array menentukan panjang tanda hubung dan spasi dalam unit logis.Jika
nPenStyle
adalahPS_ALTERNATE
, unit gaya diabaikan dan setiap piksel lainnya diatur.
Ketika aplikasi tidak lagi memerlukan pena tertentu, aplikasi harus memanggil CGdiObject::DeleteObject
fungsi anggota atau menghancurkan CPen
objek sehingga sumber daya tidak lagi digunakan. Aplikasi tidak boleh menghapus pena saat pena dipilih dalam konteks perangkat.
Contoh
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
Menginisialisasi pena yang memiliki gaya, lebar, dan warna yang diberikan dalam struktur yang ditunjukkan oleh lpLogPen
.
BOOL CreatePenIndirect(LPLOGPEN lpLogPen);
Parameter
lpLogPen
Menunjuk ke struktur Windows LOGPEN
yang berisi informasi tentang pena.
Tampilkan Nilai
Bukan nol jika fungsi berhasil; jika tidak, 0.
Keterangan
Pena yang memiliki lebar lebih besar dari 1 piksel harus selalu memiliki PS_NULL
gaya , , PS_SOLID
atau PS_INSIDEFRAME
.
Jika pena memiliki PS_INSIDEFRAME
gaya dan warna yang tidak cocok dengan warna dalam tabel warna logis, pena digambar dengan warna terlarut. Gaya PS_INSIDEFRAME
identik PS_SOLID
dengan jika lebar pena kurang dari atau sama dengan 1.
Contoh
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
Mengembalikan penunjuk ke objek yang CPen
diberikan handel ke objek pena GDI Windows.
static CPen* PASCAL FromHandle(HPEN hPen);
Parameter
hPen
HPEN
handel ke pena GDI Windows.
Tampilkan Nilai
Penunjuk ke CPen
objek jika berhasil; jika tidak NULL
.
Keterangan
CPen
Jika objek tidak dilampirkan ke handel, objek sementara CPen
dibuat dan dilampirkan. Objek sementara CPen
ini hanya berlaku sampai kali berikutnya aplikasi memiliki waktu menganggur dalam perulangan peristiwanya, di mana semua objek grafis sementara dihapus. Dengan kata lain, objek sementara hanya valid selama pemrosesan satu pesan jendela.
Contoh
// Convert an HPEN to a CPen*.
// NOTE: hPen is a valid pen handle.
CPen* pPen = CPen::FromHandle(hPen);
CPen::GetExtLogPen
Mendapatkan struktur yang EXTLOGPEN
mendasar.
int GetExtLogPen(EXTLOGPEN* pLogPen);
Parameter
pLogPen
Menunjuk ke EXTLOGPEN
struktur yang berisi informasi tentang pena.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Keterangan
Struktur EXTLOGPEN
mendefinisikan atribut gaya, lebar, dan kuas pena. Misalnya, ajakan GetExtLogPen
untuk mencocokkan gaya pena tertentu.
Lihat topik berikut di Windows SDK untuk informasi tentang atribut pena:
Contoh
Contoh kode berikut menunjukkan panggilan GetExtLogPen
untuk mengambil atribut pena, lalu membuat pena kosmetik baru dengan warna yang sama.
EXTLOGPEN extlogpen;
penExisting.GetExtLogPen(&extlogpen);
CPen penOther;
LOGBRUSH LogBrush = { extlogpen.elpBrushStyle, extlogpen.elpColor,
extlogpen.elpHatch };
penOther.CreatePen(PS_COSMETIC, 1, &LogBrush);
CPen::GetLogPen
Mendapatkan struktur yang LOGPEN
mendasar.
int GetLogPen(LOGPEN* pLogPen);
Parameter
pLogPen
Menunjuk ke LOGPEN
struktur untuk berisi informasi tentang pena.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Keterangan
Struktur LOGPEN
mendefinisikan gaya, warna, dan pola pena.
Misalnya, ajakan GetLogPen
untuk mencocokkan gaya pena tertentu.
Lihat topik berikut di Windows SDK untuk informasi tentang atribut pena:
Contoh
Contoh kode berikut menunjukkan panggilan GetLogPen
untuk mengambil karakter pena, lalu membuat pena baru yang solid dengan warna yang sama.
LOGPEN logpen;
penExisting.GetLogPen(&logpen);
CPen penOther(PS_SOLID, 0, logpen.lopnColor);
CPen::operator HPEN
Mendapatkan handel GDI Windows terlampir dari CPen
objek.
operator HPEN() const;
Tampilkan Nilai
Jika berhasil, handel ke objek GDI Windows yang diwakili oleh CPen
objek; jika tidak NULL
.
Keterangan
Operator ini adalah operator transmisi, yang mendukung penggunaan HPEN
langsung objek.
Untuk informasi selengkapnya tentang menggunakan objek grafis, lihat artikel Objek Grafis di Windows SDK.
Contoh
// 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;