Aracılığıyla paylaş


CBrush Sınıf

Bir Windows grafik cihaz arabirimi (GDI) fırçası kapsüller.

Sözdizimi

class CBrush : public CGdiObject

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CBrush::CBrush Bir CBrush nesne oluşturur.

Genel Yöntemler

Veri Akışı Adı Açıklama
CBrush::CreateBrushIndirect Bir yapıda belirtilen stil, renk ve desenle bir LOGBRUSH fırça başlatır.
CBrush::CreateDIBPatternBrush Cihazdan bağımsız bit eşlem (DIB) tarafından belirtilen desene sahip bir fırça başlatır.
CBrush::CreateHatchBrush Belirtilen taranmış desen ve renkle bir fırça başlatır.
CBrush::CreatePatternBrush Bit eşlem tarafından belirtilen desene sahip bir fırça başlatır.
CBrush::CreateSolidBrush Belirtilen düz renkle bir fırça başlatır.
CBrush::CreateSysColorBrush Varsayılan sistem rengi olan bir fırça oluşturur.
CBrush::FromHandle Windows HBRUSH nesnesine tanıtıcı CBrush verildiğinde nesneye bir işaretçi döndürür.
CBrush::GetLogBrush Bir LOGBRUSH yapı alır.

Ortak İşleçler

Veri Akışı Adı Açıklama
CBrush::operator HBRUSH Nesneye bağlı Windows tutamacını CBrush döndürür.

Açıklamalar

Nesne CBrush kullanmak için bir CBrush nesne oluşturup fırça gerektiren herhangi CDC bir üye işlevine geçirin.

Fırçalar düz, yumurtadan çıkmış veya desenli olabilir.

hakkında CBrushdaha fazla bilgi için bkz . Grafik Nesneleri.

Devralma Hiyerarşisi

CObject

CGdiObject

CBrush

Gereksinimler

Üstbilgi: afxwin.h

CBrush::CBrush

Bir CBrush nesne oluşturur.

CBrush();
CBrush(COLORREF crColor);
CBrush(int nIndex, COLORREF crColor);
explicit CBrush(CBitmap* pBitmap);

Parametreler

crColor
Fırçanın ön plan rengini RGB rengi olarak belirtir. Fırça taranırsa, bu parametre taramanın rengini belirtir.

nIndex
Fırçanın tarama stilini belirtir. Aşağıdaki değerlerden herhangi biri olabilir:

  • HS_BDIAGONAL 45 derecede aşağı doğru tarama (soldan sağa)

  • HS_CROSS Yatay ve dikey çapraz çizgi

  • HS_DIAGCROSS 45 derecelik çapraz çizgi

  • HS_FDIAGONAL 45 derecede yukarı doğru tarama (soldan sağa)

  • HS_HORIZONTAL Yatay tarama

  • HS_VERTICAL Dikey tarama

pBitmap
Fırçanın boyadığı bit eşlemi belirten bir CBitmap nesneye işaret eder.

Açıklamalar

CBrush dört aşırı yüklenmiş oluşturucuya sahiptir. Bağımsız değişken içermeyen oluşturucu, kullanılmadan önce başlatılması gereken başlatılmamış CBrush bir nesne oluşturur.

Oluşturucuyu bağımsız değişken olmadan kullanırsanız, sonuçta CBrush elde edilen nesneyi , , CreateHatchBrushCreateBrushIndirect, CreatePatternBrushveya CreateDIBPatternBrushile CreateSolidBrushbaşlatmanız gerekir. Bağımsız değişkenleri alan oluşturuculardan birini kullanırsanız, başka başlatma gerekmez. Bağımsız değişkenlere sahip oluşturucular hatalarla karşılaşılırsa bir özel durum oluşturabilir, ancak bağımsız değişken içermeyen oluşturucu her zaman başarılı olur.

Tek COLORREF parametreli oluşturucu, belirtilen renge sahip düz bir fırça oluşturur. Renk bir RGB değeri belirtir ve içindeki WINDOWS.Hmakroyla RGB oluşturulabilir.

İki parametreli oluşturucu bir tarama fırçası oluşturur. parametresi, nIndex taranmış desenin dizinini belirtir. crColor parametresi rengi belirtir.

Parametresi olan CBitmap oluşturucu, desenli bir fırça oluşturur. parametresi bir bit eşlem tanımlar. Bit eşlem, , , CBitmap::CreateBitmapIndirectCBitmap::LoadBitmapveya CBitmap::CreateCompatibleBitmapkullanılarak CBitmap::CreateBitmapoluşturulduğu varsayılır. Doldurma düzeninde kullanılacak bit eşlem için minimum boyut 8 piksel x 8 pikseldir.

Örnek

// 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

Bir yapıda belirtilen stil, renk ve desenle fırça LOGBRUSH başlatır.

BOOL CreateBrushIndirect(const LOGBRUSH* lpLogBrush);

Parametreler

lpLogBrush
Fırça hakkında bilgi içeren bir LOGBRUSH yapıyı gösterir.

Dönüş Değeri

İşlev başarılı olursa sıfır dışında bir değer, aksi durumda 0.

Açıklamalar

Fırça daha sonra herhangi bir cihaz bağlamı için geçerli fırça olarak seçilebilir.

Tek renkli (1 düzlem, piksel başına 1 bit) bit eşlem kullanılarak oluşturulan fırça, geçerli metin ve arka plan renkleri kullanılarak çizilir. 0 olarak ayarlanmış bir bit ile temsil edilen pikseller geçerli metin rengiyle çizilir. Bit ayarı 1 olarak ayarlanmış pikseller geçerli arka plan rengiyle çizilir.

Örnek

// 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

Cihazdan bağımsız bit eşlem (DIB) tarafından belirtilen desene sahip bir fırça başlatır.

BOOL CreateDIBPatternBrush(
    HGLOBAL hPackedDIB,
    UINT nUsage);

BOOL CreateDIBPatternBrush(
    const void* lpPackedDIB,
    UINT nUsage);

Parametreler

hPackedDIB
Paketlenmiş cihazdan bağımsız bit eşlem (DIB) içeren genel bellek nesnesini tanımlar.

nUsage
Veri yapısının bmiColors[] BITMAPINFO alanlarının ("paketlenmiş DIB"nin bir parçası) geçerli olarak gerçekleştirilen mantıksal palete açık RGB değerleri veya dizinleri içerip içermediğini belirtir. parametresi aşağıdaki değerlerden biri olmalıdır:

  • DIB_PAL_COLORS Renk tablosu 16 bit dizinlerden oluşan bir diziden oluşur.

  • DIB_RGB_COLORS Renk tablosu değişmez RGB değerleri içerir.

lpPackedDIB
Bit eşlem piksellerini tanımlayan bir bayt dizisinin hemen ardından bir BITMAPINFO yapıdan oluşan paketlenmiş bir DIB'yi gösterir.

Dönüş Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Fırça daha sonra tarama işlemlerini destekleyen herhangi bir cihaz bağlamı için seçilebilir.

İki sürüm, DIB'yi işleme yönteminize göre farklılık gösterir:

  • İlk sürümde, DIB'ye tanıtıcı almak için Genel bellek bloğu ayırmak ve ardından belleği paketlenmiş DIB ile doldurmak için Windows GlobalAlloc işlevini çağırırsınız.

  • İkinci sürümde, paketlenmiş DIB için bellek ayırmak için çağrı GlobalAlloc yapılması gerekmez.

Paketlenmiş DIB, bit eşlem piksellerini tanımlayan bayt dizisinin hemen ardından bir BITMAPINFO veri yapısından oluşur. Dolgu deseni olarak kullanılan bit eşlemler 8 piksel x 8 piksel olmalıdır. Bit eşlem daha büyükse, Windows yalnızca bit eşleminin sol üst köşesindeki ilk 8 satıra ve 8 piksel sütununa karşılık gelen bitleri kullanarak bir dolgu deseni oluşturur.

Bir uygulama tek renkli bir cihaz bağlamında iki renkli DIB desen fırçası seçtiğinde, Windows DIB'de belirtilen renkleri yoksayar ve bunun yerine cihaz bağlamının geçerli metin ve arka plan renklerini kullanarak desen fırçasını görüntüler. DIB'nin ilk rengine eşlenen pikseller (DIB renk tablosundaki 0 uzaklığında) metin rengi kullanılarak görüntülenir. İkinci renge eşlenen pikseller (renk tablosundaki 1 uzaklığında) arka plan rengi kullanılarak görüntülenir.

Aşağıdaki Windows işlevlerini kullanma hakkında bilgi için bkz. Windows SDK'sı:

  • CreateDIBPatternBrush (Bu işlev yalnızca 3.0'dan önceki Windows sürümleri için yazılmış uygulamalarla uyumluluk için sağlanır; işlevini kullanın CreateDIBPatternBrushPt .)

  • CreateDIBPatternBrushPt (Bu işlev Win32 tabanlı uygulamalar için kullanılmalıdır.)

  • GlobalAlloc

Örnek

// 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

Belirtilen taranmış desen ve renkle bir fırça başlatır.

BOOL CreateHatchBrush(
    int nIndex,
    COLORREF crColor);

Parametreler

nIndex
Fırçanın tarama stilini belirtir. Aşağıdaki değerlerden herhangi biri olabilir:

  • HS_BDIAGONAL 45 derecede aşağı doğru tarama (soldan sağa)

  • HS_CROSS Yatay ve dikey çapraz çizgi

  • HS_DIAGCROSS 45 derecelik çapraz çizgi

  • HS_FDIAGONAL 45 derecede yukarı doğru tarama (soldan sağa)

  • HS_HORIZONTAL Yatay tarama

  • HS_VERTICAL Dikey tarama

crColor
Fırçanın ön plan rengini RGB rengi (taramaların rengi) olarak belirtir. Daha fazla bilgi için Bkz COLORREF . Windows SDK'sı.

Dönüş Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Fırça daha sonra herhangi bir cihaz bağlamı için geçerli fırça olarak seçilebilir.

Örnek

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

Bit eşlem tarafından belirtilen desene sahip bir fırça başlatır.

BOOL CreatePatternBrush(CBitmap* pBitmap);

Parametreler

pBitmap
Bit eşlem tanımlar.

Dönüş Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Fırça daha sonra tarama işlemlerini destekleyen herhangi bir cihaz bağlamı için seçilebilir. tarafından pBitmap tanımlanan bit eşlem genellikle , CBitmap::CreateBitmapIndirect, CBitmap::LoadBitmapveya CBitmap::CreateCompatibleBitmap işlevi kullanılarak CBitmap::CreateBitmapbaşlatılır.

Dolgu deseni olarak kullanılan bit eşlemler 8 piksel x 8 piksel olmalıdır. Bit eşlem daha büyükse, Windows yalnızca bit eşleminin sol üst köşesindeki ilk 8 satıra ve piksel sütununa karşılık gelen bitleri kullanır.

Desen fırçası ilişkili bit eşlem etkilenmeden silinebilir. Başka bir deyişle bit eşlem herhangi bir sayıda desen fırçası oluşturmak için kullanılabilir.

Tek renkli bit eşlem (1 renk düzlemi, piksel başına 1 bit) kullanılarak oluşturulan fırça, geçerli metin ve arka plan renkleri kullanılarak çizilir. 0 olarak ayarlanmış bit ile temsil edilen pikseller geçerli metin rengiyle çizilir. 1 olarak ayarlanmış bir bit ile temsil edilen pikseller geçerli arka plan rengiyle çizilir.

bir Windows işlevi kullanma CreatePatternBrushhakkında bilgi için bkz. Windows SDK'sı.

Örnek

// 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

Belirtilen düz renkle bir fırça başlatır.

BOOL CreateSolidBrush(COLORREF crColor);

Parametreler

crColor
Fırçanın COLORREF rengini belirten bir yapı. Renk bir RGB değeri belirtir ve içindeki WINDOWS.Hmakroyla RGB oluşturulabilir.

Dönüş Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Fırça daha sonra herhangi bir cihaz bağlamı için geçerli fırça olarak seçilebilir.

Bir uygulama tarafından CreateSolidBrusholuşturulan fırçayı kullanmayı bitirdiğinde, cihaz bağlamından fırçayı seçmelidir.

Örnek

örneğine CBrush::CBrushbakın.

CBrush::CreateSysColorBrush

Fırça rengini başlatır.

BOOL CreateSysColorBrush(int nIndex);

Parametreler

nIndex
Bir renk dizini belirtir. Bu değer, 21 pencere öğesinden birini boyamak için kullanılan renge karşılık gelir. Değerlerin listesi için Windows SDK'sında bakın GetSysColor .

Dönüş Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Fırça daha sonra herhangi bir cihaz bağlamı için geçerli fırça olarak seçilebilir.

Bir uygulama tarafından CreateSysColorBrusholuşturulan fırçayı kullanmayı bitirdiğinde, cihaz bağlamından fırçayı seçmelidir.

Örnek

// 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

Windows HBRUSH nesnesine tanıtıcı CBrush verildiğinde nesneye bir işaretçi döndürür.

static CBrush* PASCAL FromHandle(HBRUSH hBrush);

Parametreler

hBrush
Bir Windows GDI fırçasına TANıTıCı.

Dönüş Değeri

Başarılı olursa nesne CBrush işaretçisi; aksi takdirde NULL.

Açıklamalar

Bir CBrush nesne tanıtıcıya zaten bağlı değilse, geçici CBrush bir nesne oluşturulur ve eklenir. Bu geçici CBrush nesne yalnızca uygulamanın olay döngüsünde boşta kalma süresine sahip olduğu bir sonraki zamana kadar geçerlidir. Şu anda tüm geçici grafik nesneleri silinir. Başka bir deyişle, geçici nesne yalnızca bir pencere iletisinin işlenmesi sırasında geçerlidir.

Grafik nesnelerini kullanma hakkında daha fazla bilgi için bkz . Windows SDK'sında Grafik Nesneleri .

Örnek

CBrush::CBrush örneğine bakın.

CBrush::GetLogBrush

Yapıyı almak için bu üye işlevini çağırın LOGBRUSH .

int GetLogBrush(LOGBRUSH* pLogBrush);

Parametreler

pLogBrush
Fırça hakkında bilgi içeren bir LOGBRUSH yapıyı gösterir.

Dönüş Değeri

İşlev başarılı olursa ve pLogBrush geçerli bir işaretçiyse, dönüş değeri arabelleğe depolanan bayt sayısıdır.

İşlev başarılı olursa ve pLogBrush ise NULL, dönüş değeri işlevin arabelleğe depoacağı bilgileri tutmak için gereken bayt sayısıdır.

İşlev başarısız olursa, dönüş değeri 0 olur.

Açıklamalar

Yapı, LOGBRUSH fırçanın stilini, rengini ve desenini tanımlar.

Örneğin, bir bit eşlemin belirli rengi veya deseni ile eşleştirmek için çağrısında GetLogBrush bulunur.

Örnek

// 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

Nesnenin ekli Windows GDI tutamacını CBrush almak için bu işleci kullanın.

operator HBRUSH() const;

Dönüş Değeri

Başarılı olursa, nesnesi tarafından temsil edilen Windows GDI nesnesine bir CBrush tanıtıcı; aksi takdirde NULL.

Açıklamalar

Bu işleç, bir nesnenin doğrudan kullanımını destekleyen bir HBRUSH atama işlecidir.

Grafik nesnelerini kullanma hakkında daha fazla bilgi için bkz . Windows SDK'sında Grafik Nesneleri .

Örnek

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);

Ayrıca bkz.

MFC Örneği PROPDLG
CGdiObject Sınıf
Hiyerarşi Grafiği
CBitmap Sınıf
CDC Sınıf