Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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_SOLIDMembuat pena yang solid.PS_DASHMembuat pena putus-putus. Hanya berlaku ketika lebar pena adalah 1 atau kurang, dalam unit perangkat.PS_DOTMembuat pena bertitik. Hanya berlaku ketika lebar pena adalah 1 atau kurang, dalam unit perangkat.PS_DASHDOTMembuat pena dengan tanda hubung dan titik alternatif. Hanya berlaku ketika lebar pena adalah 1 atau kurang, dalam unit perangkat.PS_DASHDOTDOTMembuat pena dengan tanda hubung alternatif dan titik ganda. Hanya berlaku ketika lebar pena adalah 1 atau kurang, dalam unit perangkat.PS_NULLMembuat pena null.PS_INSIDEFRAMEMembuat pena yang menggambar garis di dalam bingkai bentuk tertutup yang dihasilkan oleh fungsi output GDI Windows yang menentukan persegi panjang pembatas (misalnya,Ellipsefungsi anggota , ,RectangleRoundRect,Pie, danChord). Ketika gaya ini digunakan dengan fungsi output GDI Windows yang tidak menentukan persegi panjang pembatas (misalnya,LineTofungsi 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_GEOMETRICMembuat pena geometris.PS_COSMETICMembuat pena kosmetik.Versi
CPenkedua konstruktor menambahkan gaya pena berikut untuknPenStyle:PS_ALTERNATEMembuat pena yang mengatur setiap piksel lainnya. (Gaya ini hanya berlaku untuk pena kosmetik.)PS_USERSTYLEMembuat pena yang menggunakan array gaya yang disediakan oleh pengguna.Batas akhir bisa menjadi salah satu nilai berikut:
PS_ENDCAP_ROUNDBatas akhir bulat.PS_ENDCAP_SQUAREBatas akhir adalah persegi.PS_ENDCAP_FLATTutup ujungnya datar.Gabungan bisa menjadi salah satu nilai berikut:
PS_JOIN_BEVELGabungan dimiringkan.PS_JOIN_MITERGabungan bermigrasi ketika berada dalam batas saat ini yang ditetapkan olehSetMiterLimitfungsi. Jika gabungan melebihi batas ini, gabungan akan dimiringkan.PS_JOIN_ROUNDGabungan 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
nPenStyleadalahPS_GEOMETRIC, lebar diberikan dalam unit logis. JikanPenStyleadalahPS_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 CreatePenfungsi 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
CreatePenpertama , 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 ,
CreatePenjikanPenStyleadalahPS_GEOMETRIC, lebar diberikan dalam unit logis. JikanPenStyleadalahPS_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_NULLgaya , , PS_SOLIDatau 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
nPenStyleadalahPS_COSMETICdanPS_USERSTYLE, entri dalamlpStylearray menentukan panjang tanda hubung dan spasi dalam unit gaya. Unit gaya didefinisikan oleh perangkat tempat pena digunakan untuk menggambar garis.Jika
nPenStyleadalahPS_GEOMETRICdanPS_USERSTYLE, entri dalamlpStylearray menentukan panjang tanda hubung dan spasi dalam unit logis.Jika
nPenStyleadalahPS_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_NULLgaya , , PS_SOLIDatau 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;