Bagikan melalui


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

CObject

CGdiObject

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 derajat

  • HS_CROSS Crosshatch horizontal dan vertikal

  • HS_DIAGCROSS Crosshatch pada 45 derajat

  • HS_FDIAGONAL Menetas ke atas (kiri ke kanan) pada 45 derajat

  • HS_HORIZONTAL Menetas horizontal

  • HS_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, , 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_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; gunakan CreateDIBPatternBrushPt fungsi .)

  • CreateDIBPatternBrushPt (Fungsi ini harus digunakan untuk aplikasi berbasis Win32.)

  • GlobalAlloc

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 derajat

  • HS_CROSS Crosshatch horizontal dan vertikal

  • HS_DIAGCROSS Crosshatch pada 45 derajat

  • HS_FDIAGONAL Menetas ke atas (kiri ke kanan) pada 45 derajat

  • HS_HORIZONTAL Menetas horizontal

  • HS_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::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