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 sikat antarmuka perangkat grafis (GDI) Windows.
Sintaks
class CBrush : public CGdiObject
Anggota
Konstruktor Publik
| Nama | Deskripsi |
|---|---|
CBrush::CBrush |
Membuat CBrush objek. |
Metode Publik
| Nama | Deskripsi |
|---|---|
CBrush::CreateBrushIndirect |
Menginisialisasi kuas dengan gaya, warna, dan pola yang LOGBRUSH ditentukan dalam struktur. |
CBrush::CreateDIBPatternBrush |
Menginisialisasi kuas dengan pola yang ditentukan oleh bitmap independen perangkat (DIB). |
CBrush::CreateHatchBrush |
Menginisialisasi kuas dengan pola dan warna tetas yang ditentukan. |
CBrush::CreatePatternBrush |
Menginisialisasi kuas dengan pola yang ditentukan oleh bitmap. |
CBrush::CreateSolidBrush |
Menginisialisasi kuas dengan warna solid yang ditentukan. |
CBrush::CreateSysColorBrush |
Membuat kuas yang merupakan warna sistem default. |
CBrush::FromHandle |
Mengembalikan penunjuk ke CBrush objek saat diberikan handel ke objek Windows HBRUSH . |
CBrush::GetLogBrush |
LOGBRUSH Mendapatkan struktur. |
Operator Publik
| Nama | Deskripsi |
|---|---|
CBrush::operator HBRUSH |
Mengembalikan handel Windows yang dilampirkan ke CBrush objek. |
Keterangan
Untuk menggunakan CBrush objek, buat CBrush objek dan teruskan ke fungsi anggota apa pun CDC yang memerlukan kuas.
Kuas bisa padat, menetas, atau berpola.
Untuk informasi selengkapnya tentang CBrush, lihat Objek Grafik.
Hierarki Warisan
CBrush
Persyaratan
Header: afxwin.h
CBrush::CBrush
Membuat CBrush objek.
CBrush();
CBrush(COLORREF crColor);
CBrush(int nIndex, COLORREF crColor);
explicit CBrush(CBitmap* pBitmap);
Parameter
crColor
Menentukan warna latar depan kuas sebagai warna RGB. Jika kuas menetas, parameter ini menentukan warna penetasan.
nIndex
Menentukan gaya menetas kuas. Ini bisa menjadi salah satu nilai berikut:
HS_BDIAGONALMenetas ke bawah (kiri ke kanan) pada 45 derajatHS_CROSSCrosshatch horizontal dan vertikalHS_DIAGCROSSCrosshatch pada 45 derajatHS_FDIAGONALMenetas ke atas (kiri ke kanan) pada 45 derajatHS_HORIZONTALMenetas horizontalHS_VERTICALHatch vertikal
pBitmap
Menunjuk ke CBitmap objek yang menentukan bitmap tempat kuas dicat.
Keterangan
CBrush memiliki empat konstruktor yang kelebihan beban. Konstruktor tanpa argumen membuat objek yang tidak diinisialisasi CBrush yang harus diinisialisasi sebelum dapat digunakan.
Jika Anda menggunakan konstruktor tanpa argumen, Anda harus menginisialisasi objek yang dihasilkan dengan CreateSolidBrush, , CreateHatchBrushCreateBrushIndirect, CreatePatternBrush, atau CreateDIBPatternBrush.CBrush Jika Anda menggunakan salah satu 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.
Konstruktor dengan parameter tunggal COLORREF membangun kuas solid dengan warna yang ditentukan. Warna menentukan nilai RGB dan dapat dibangun dengan RGB makro di WINDOWS.H.
Konstruktor dengan dua parameter membangun kuas hatch. Parameter nIndex menentukan indeks pola yang menetas. Parameter crColor menentukan warna.
Konstruktor dengan CBitmap parameter membangun sikat berpola. Parameter mengidentifikasi bitmap. Bitmap diasumsikan telah dibuat dengan menggunakan CBitmap::CreateBitmap, , CBitmap::CreateBitmapIndirectCBitmap::LoadBitmap, atau CBitmap::CreateCompatibleBitmap. Ukuran minimum bitmap yang akan digunakan dalam pola isian adalah 8 piksel sebesar 8 piksel.
Contoh
// CBrush::CBrush.
CBrush brush1; // Must initialize!
brush1.CreateSolidBrush(RGB(0, 0, 255)); // Blue brush.
CRect rc;
GetClientRect(&rc);
ScreenToClient(&rc);
// Save original brush.
CBrush *pOrigBrush = (CBrush *)pDC->SelectObject(&brush1);
// Paint upper left corner with blue brush.
pDC->Rectangle(0, 0, rc.Width() / 2, rc.Height() / 2);
// These constructors throw resource exceptions.
try
{
// CBrush::CBrush(COLORREF crColor)
CBrush brush2(RGB(255, 0, 0)); // Solid red brush.
// CBrush::CBrush(int nIndex, COLORREF crColor)
// Hatched green brush.
CBrush brush3(HS_DIAGCROSS, RGB(0, 255, 0));
// CBrush::CBrush(CBitmap* pBitmap)
CBitmap bmp;
// Load a resource bitmap.
bmp.LoadBitmap(IDB_BRUSH);
CBrush brush4(&bmp);
pDC->SelectObject(&brush2);
// Paint upper right corner with red brush.
pDC->Rectangle(rc.Width() / 2, 0, rc.Width(),
rc.Height() / 2);
pDC->SelectObject(&brush3);
// Paint lower left corner with green hatched brush.
pDC->Rectangle(0, rc.Height() / 2, rc.Width() / 2,
rc.Height());
pDC->SelectObject(&brush4);
// Paint lower right corner with resource brush.
pDC->Rectangle(rc.Width() / 2, rc.Height() / 2,
rc.Width(), rc.Height());
}
catch (CResourceException *e)
{
e->ReportError();
e->Delete();
}
// Reselect original brush into device context.
pDC->SelectObject(pOrigBrush);
CBrush::CreateBrushIndirect
Menginisialisasi kuas dengan gaya, warna, dan pola yang LOGBRUSH ditentukan dalam struktur.
BOOL CreateBrushIndirect(const LOGBRUSH* lpLogBrush);
Parameter
lpLogBrush
Menunjuk ke LOGBRUSH struktur yang berisi informasi tentang kuas.
Tampilkan Nilai
Bukan nol jika fungsi berhasil; jika tidak, 0.
Keterangan
Kuas kemudian dapat dipilih sebagai kuas saat ini untuk konteks perangkat apa pun.
Kuas yang dibuat menggunakan bitmap monokrom (1 bidang, 1 bit per piksel) digambar menggunakan teks saat ini dan warna latar belakang. Piksel yang diwakili oleh bit yang diatur ke 0 akan digambar dengan warna teks saat ini. Piksel yang diwakili oleh bit yang diatur ke 1 akan digambar dengan warna latar belakang saat ini.
Contoh
// Initialize a LOGBRUSH structure.
LOGBRUSH logBrush;
logBrush.lbStyle = BS_HATCHED;
logBrush.lbColor = RGB(0, 192, 192);
logBrush.lbHatch = HS_CROSS;
// Declare an uninitialized CBrush ...
CBrush brush;
// ... and initialize it with the LOGBRUSH.
brush.CreateBrushIndirect(&logBrush);
// Select the brush (and perhaps a pen) into
// the device context.
CBrush *pOldBrush = (CBrush *)pDC->SelectObject(&brush);
CPen *pOldPen = (CPen *)pDC->SelectStockObject(BLACK_PEN);
// Have fun!
pDC->Pie(CRect(100, 100, 300, 300), CPoint(0, 0), CPoint(50, 200));
// Restore the original device context objects.
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
CBrush::CreateDIBPatternBrush
Menginisialisasi kuas dengan pola yang ditentukan oleh bitmap independen perangkat (DIB).
BOOL CreateDIBPatternBrush(
HGLOBAL hPackedDIB,
UINT nUsage);
BOOL CreateDIBPatternBrush(
const void* lpPackedDIB,
UINT nUsage);
Parameter
hPackedDIB
Mengidentifikasi objek memori global yang berisi bitmap independen perangkat yang dikemas (DIB).
nUsage
Menentukan apakah bmiColors[] bidang BITMAPINFO struktur data (bagian dari "DIB yang dikemas") berisi nilai RGB eksplisit atau indeks ke dalam palet logis yang saat ini direalisasikan. Parameter harus menjadi salah satu nilai berikut:
DIB_PAL_COLORSTabel warna terdiri dari array indeks 16-bit.DIB_RGB_COLORSTabel warna berisi nilai RGB literal.
lpPackedDIB
Menunjuk ke DIB kemasan yang BITMAPINFO terdiri dari struktur segera diikuti oleh array byte yang menentukan piksel bitmap.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Keterangan
Kuas kemudian dapat dipilih untuk konteks perangkat apa pun yang mendukung operasi raster.
Dua versi berbeda dalam cara Anda menangani DIB:
Dalam versi pertama, untuk mendapatkan handel ke DIB, Anda memanggil fungsi Windows
GlobalAllocuntuk mengalokasikan blok memori global dan kemudian mengisi memori dengan DIB yang dikemas.Pada versi kedua, tidak perlu memanggil
GlobalAllocuntuk mengalokasikan memori untuk DIB yang dikemas.
DIB yang dikemas terdiri dari BITMAPINFO struktur data yang segera diikuti oleh array byte yang menentukan piksel bitmap. Bitmap yang digunakan sebagai pola isian harus 8 piksel dengan 8 piksel. Jika bitmap lebih besar, Windows membuat pola isian hanya menggunakan bit yang sesuai dengan 8 baris pertama dan 8 kolom piksel di sudut kiri atas bitmap.
Ketika aplikasi memilih sikat pola DIB dua warna ke dalam konteks perangkat monokrom, Windows mengabaikan warna yang ditentukan dalam DIB dan sebaliknya menampilkan kuas pola menggunakan teks saat ini dan warna latar belakang konteks perangkat. Piksel yang dipetakan ke warna pertama (pada offset 0 dalam tabel warna DIB) DIB ditampilkan menggunakan warna teks. Piksel yang dipetakan ke warna kedua (pada offset 1 dalam tabel warna) ditampilkan menggunakan warna latar belakang.
Untuk informasi tentang menggunakan fungsi Windows berikut ini, lihat Windows SDK:
CreateDIBPatternBrush(Fungsi ini disediakan hanya untuk kompatibilitas dengan aplikasi yang ditulis untuk versi Windows yang lebih lama dari 3.0; gunakanCreateDIBPatternBrushPtfungsi .)CreateDIBPatternBrushPt(Fungsi ini harus digunakan untuk aplikasi berbasis Win32.)
Contoh
// Resource handle to bitmap.
HRSRC hRes;
// Global handles to bitmap resource.
HGLOBAL hData;
void *hLockedData;
CBrush brush;
// Find the resource handle.
hRes = ::FindResource(AfxGetResourceHandle(),
MAKEINTRESOURCE(IDB_BRUSH), RT_BITMAP);
if (hRes != NULL)
{
// Lock and Load (or Load and Lock).
if (((hData = ::LoadResource(AfxGetResourceHandle(),
hRes)) != NULL) &&
((hLockedData = ::LockResource(hData)) != NULL))
{
// Initialize the brush.
brush.CreateDIBPatternBrush((const void *)hLockedData,
DIB_RGB_COLORS);
// Select the brush into the device context.
CBrush *pOldBrush = pDC->SelectObject(&brush);
// Draw.
pDC->Rectangle(50, 50, 200, 200);
// Restore the original device context.
pDC->SelectObject(pOldBrush);
// Free the resource.
::FreeResource(hLockedData);
}
}
CBrush::CreateHatchBrush
Menginisialisasi kuas dengan pola dan warna tetas yang ditentukan.
BOOL CreateHatchBrush(
int nIndex,
COLORREF crColor);
Parameter
nIndex
Menentukan gaya menetas kuas. Ini bisa menjadi salah satu nilai berikut:
HS_BDIAGONALMenetas ke bawah (kiri ke kanan) pada 45 derajatHS_CROSSCrosshatch horizontal dan vertikalHS_DIAGCROSSCrosshatch pada 45 derajatHS_FDIAGONALMenetas ke atas (kiri ke kanan) pada 45 derajatHS_HORIZONTALMenetas horizontalHS_VERTICALHatch vertikal
crColor
Menentukan warna latar depan kuas sebagai warna RGB (warna tetas). Lihat COLORREF di Windows SDK untuk informasi selengkapnya.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Keterangan
Kuas kemudian dapat dipilih sebagai kuas saat ini untuk konteks perangkat apa pun.
Contoh
CBrush brush;
brush.CreateHatchBrush(HS_BDIAGONAL, RGB(255, 0, 0));
CBrush *pOldBrush;
CPen *pOldPen;
pOldBrush = (CBrush *)pDC->SelectObject(&brush);
pOldPen = (CPen *)pDC->SelectStockObject(NULL_PEN);
pDC->Ellipse(CRect(50, 50, 250, 250));
pDC->SelectObject(pOldBrush);
pDC->SelectObject(pOldPen);
CBrush::CreatePatternBrush
Menginisialisasi kuas dengan pola yang ditentukan oleh bitmap.
BOOL CreatePatternBrush(CBitmap* pBitmap);
Parameter
pBitmap
Mengidentifikasi bitmap.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Keterangan
Kuas kemudian dapat dipilih untuk konteks perangkat apa pun yang mendukung operasi raster. Bitmap yang diidentifikasi oleh pBitmap biasanya diinisialisasi dengan menggunakan CBitmap::CreateBitmapfungsi , , CBitmap::CreateBitmapIndirectCBitmap::LoadBitmap, atau CBitmap::CreateCompatibleBitmap .
Bitmap yang digunakan sebagai pola isian harus 8 piksel dengan 8 piksel. Jika bitmap lebih besar, Windows hanya akan menggunakan bit yang sesuai dengan 8 baris dan kolom piksel pertama di sudut kiri atas bitmap.
Kuas pola dapat dihapus tanpa memengaruhi bitmap terkait. Ini berarti bitmap dapat digunakan untuk membuat sejumlah kuas pola.
Kuas yang dibuat menggunakan bitmap monokrom (1 bidang warna, 1 bit per piksel) digambar menggunakan teks saat ini dan warna latar belakang. Piksel yang diwakili oleh bit yang diatur ke 0 digambar dengan warna teks saat ini. Piksel yang diwakili oleh bit yang diatur ke 1 digambar dengan warna latar belakang saat ini.
Untuk informasi tentang menggunakan CreatePatternBrush, fungsi Windows, lihat Windows SDK.
Contoh
// Create a hatched bit pattern.
WORD HatchBits[8] = {0x11, 0x22, 0x44, 0x88, 0x11,
0x22, 0x44, 0x88};
// Use the bit pattern to create a bitmap.
CBitmap bm;
bm.CreateBitmap(8, 8, 1, 1, HatchBits);
// Create a pattern brush from the bitmap.
CBrush brush;
brush.CreatePatternBrush(&bm);
// Select the brush into a device context, and draw.
CBrush *pOldBrush = (CBrush *)pDC->SelectObject(&brush);
pDC->RoundRect(CRect(50, 50, 200, 200), CPoint(10, 10));
// Restore the original brush.
pDC->SelectObject(pOldBrush);
CBrush::CreateSolidBrush
Menginisialisasi kuas dengan warna solid tertentu.
BOOL CreateSolidBrush(COLORREF crColor);
Parameter
crColor
Struktur COLORREF yang menentukan warna kuas. Warna menentukan nilai RGB dan dapat dibangun dengan RGB makro di WINDOWS.H.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Keterangan
Kuas kemudian dapat dipilih sebagai kuas saat ini untuk konteks perangkat apa pun.
Ketika aplikasi telah selesai menggunakan kuas yang dibuat oleh CreateSolidBrush, aplikasi harus memilih kuas dari konteks perangkat.
Contoh
Lihat contoh untuk CBrush::CBrush.
CBrush::CreateSysColorBrush
Menginisialisasi warna kuas.
BOOL CreateSysColorBrush(int nIndex);
Parameter
nIndex
Menentukan indeks warna. Nilai ini sesuai dengan warna yang digunakan untuk melukis salah satu dari 21 elemen jendela. Lihat GetSysColor di Windows SDK untuk daftar nilai.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Keterangan
Kuas kemudian dapat dipilih sebagai kuas saat ini untuk konteks perangkat apa pun.
Ketika aplikasi telah selesai menggunakan kuas yang dibuat oleh CreateSysColorBrush, aplikasi harus memilih kuas dari konteks perangkat.
Contoh
// Declare a CBrush and initialize to a system color.
CBrush brush;
brush.CreateSysColorBrush(COLOR_BTNFACE);
// Select the brush into the device context.
CBrush *pOldBrush = (CBrush *)pDC->SelectObject(&brush);
// Draw.
CRect rect(50, 50, 150, 150);
pDC->Rectangle(rect);
// Reselect the original brush.
pDC->SelectObject(pOldBrush);
CBrush::FromHandle
Mengembalikan penunjuk ke CBrush objek saat diberikan handel ke objek Windows HBRUSH .
static CBrush* PASCAL FromHandle(HBRUSH hBrush);
Parameter
hBrush
TANGANI ke sikat GDI Windows.
Tampilkan Nilai
Penunjuk ke CBrush objek jika berhasil; jika tidak NULL.
Keterangan
CBrush Jika objek belum dilampirkan ke handel, objek sementara CBrush dibuat dan dilampirkan. Objek sementara CBrush ini hanya berlaku hingga kali berikutnya aplikasi memiliki waktu menganggur dalam perulangan peristiwanya. Saat ini, semua objek grafik sementara dihapus. Dengan kata lain, objek sementara hanya valid selama pemrosesan satu pesan jendela.
Untuk informasi selengkapnya tentang menggunakan objek grafis, lihat Objek Grafis di Windows SDK.
Contoh
Lihat contoh untuk CBrush::CBrush.
CBrush::GetLogBrush
Panggil fungsi anggota ini untuk mengambil LOGBRUSH struktur.
int GetLogBrush(LOGBRUSH* pLogBrush);
Parameter
pLogBrush
Menunjuk ke LOGBRUSH struktur yang berisi informasi tentang kuas.
Tampilkan Nilai
Jika fungsi berhasil, dan pLogBrush merupakan penunjuk yang valid, nilai pengembalian adalah jumlah byte yang disimpan ke dalam buffer.
Jika fungsi berhasil, dan pLogBrush adalah NULL, nilai pengembalian adalah jumlah byte yang diperlukan untuk menyimpan informasi yang akan disimpan fungsi ke dalam buffer.
Jika fungsi gagal, nilai yang dikembalikan adalah 0.
Keterangan
Struktur LOGBRUSH mendefinisikan gaya, warna, dan pola kuas.
Misalnya, ajakan GetLogBrush untuk mencocokkan warna atau pola bitmap tertentu.
Contoh
// Example for CBrush::GetLogBrush
LOGBRUSH logbrush;
brushExisting.GetLogBrush(&logbrush);
CBrush brushOther(logbrush.lbColor);
// Another example
// Declare a LOGBRUSH
LOGBRUSH logBrush;
// Using a bitmap for this example.
// The bitmap should be a project resource.
CBitmap bm;
bm.LoadBitmap(IDB_BRUSH);
try
{
// Create a brush
CBrush brush1(&bm);
// Use GetLogBrush to fill the LOGBRUSH structure
brush1.GetLogBrush(&logBrush);
// Create a second brush using the LOGBRUSH data
CBrush brush2;
brush2.CreateBrushIndirect(&logBrush);
// Use the first brush
CBrush *pOldBrush = (CBrush *)pDC->SelectObject(&brush1);
pDC->Rectangle(CRect(50, 50, 150, 150));
// The second brush has the specified characteristics
// of the first brush
pDC->SelectObject(&brush2);
pDC->Ellipse(200, 50, 300, 150);
// Reselect the original brush
pDC->SelectObject(pOldBrush);
}
catch (CResourceException *e)
{
e->ReportError();
e->Delete();
}
CBrush::operator HBRUSH
Gunakan operator ini untuk mendapatkan handel Windows GDI objek yang CBrush terpasang.
operator HBRUSH() const;
Tampilkan Nilai
Jika berhasil, handel ke objek GDI Windows yang diwakili oleh CBrush objek; jika tidak NULL.
Keterangan
Operator ini adalah operator transmisi, yang mendukung penggunaan HBRUSH langsung objek.
Untuk informasi selengkapnya tentang menggunakan objek grafis, lihat Objek Grafis di Windows SDK.
Contoh
RECT rc = {50, 50, 200, 200};
Rectangle(pDC->GetSafeHdc(), rc.left, rc.top, rc.right, rc.bottom);
// The Win32 call to FillRect requires an HBRUSH.
// The HBRUSH operator casts the CBrush object
// to the required type.
CBrush brush;
brush.CreateSysColorBrush(COLOR_BTNFACE);
FillRect(pDC->GetSafeHdc(), &rc, (HBRUSH)brush);
Lihat juga
Sampel MFC PROPDLG
CGdiObject Kelas
Bagan Hierarki
CBitmap Kelas
CDC Kelas