CBrush
Kelas
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_BDIAGONAL
Menetas ke bawah (kiri ke kanan) pada 45 derajatHS_CROSS
Crosshatch horizontal dan vertikalHS_DIAGCROSS
Crosshatch pada 45 derajatHS_FDIAGONAL
Menetas ke atas (kiri ke kanan) pada 45 derajatHS_HORIZONTAL
Menetas horizontalHS_VERTICAL
Hatch 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
, , CreateHatchBrush
CreateBrushIndirect
, 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::CreateBitmapIndirect
CBitmap::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_COLORS
Tabel warna terdiri dari array indeks 16-bit.DIB_RGB_COLORS
Tabel 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
GlobalAlloc
untuk mengalokasikan blok memori global dan kemudian mengisi memori dengan DIB yang dikemas.Pada versi kedua, tidak perlu memanggil
GlobalAlloc
untuk 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; gunakanCreateDIBPatternBrushPt
fungsi .)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_BDIAGONAL
Menetas ke bawah (kiri ke kanan) pada 45 derajatHS_CROSS
Crosshatch horizontal dan vertikalHS_DIAGCROSS
Crosshatch pada 45 derajatHS_FDIAGONAL
Menetas ke atas (kiri ke kanan) pada 45 derajatHS_HORIZONTAL
Menetas horizontalHS_VERTICAL
Hatch 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::CreateBitmap
fungsi , , CBitmap::CreateBitmapIndirect
CBitmap::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