Bagikan melalui


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

CObject

CGdiObject

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_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, dan Chord ). 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 untuk nPenStyle:

  • 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 oleh SetMiterLimit 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 adalah PS_GEOMETRIC, lebar diberikan dalam unit logis. Jika nPenStyle adalah PS_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 , CreatePenjika nPenStyle adalah PS_GEOMETRIC, lebar diberikan dalam unit logis. Jika nPenStyle adalah PS_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 nPenStyle adalah PS_COSMETIC dan PS_USERSTYLE, entri dalam lpStyle array menentukan panjang tanda hubung dan spasi dalam unit gaya. Unit gaya didefinisikan oleh perangkat tempat pena digunakan untuk menggambar garis.

  • Jika nPenStyle adalah PS_GEOMETRIC dan PS_USERSTYLE, entri dalam lpStyle array menentukan panjang tanda hubung dan spasi dalam unit logis.

  • Jika nPenStyle adalah PS_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;

Lihat juga

CGdiObject Kelas
Bagan Hierarki
CBrush Kelas