CBrush
수업
Windows GDI(그래픽 디바이스 인터페이스) 브러시를 캡슐화합니다.
구문
class CBrush : public CGdiObject
멤버
공용 생성자
속성 | 설명 |
---|---|
CBrush::CBrush |
CBrush 개체를 생성합니다. |
공용 메서드
이름 | 설명 |
---|---|
CBrush::CreateBrushIndirect |
구조체에 지정된 스타일, 색 및 패턴을 사용하여 브러시를 LOGBRUSH 초기화합니다. |
CBrush::CreateDIBPatternBrush |
DIB(디바이스 독립적 비트맵)로 지정된 패턴을 사용하여 브러시를 초기화합니다. |
CBrush::CreateHatchBrush |
지정된 빗살 무늬 및 색으로 브러시를 초기화합니다. |
CBrush::CreatePatternBrush |
비트맵으로 지정된 패턴을 사용하여 브러시를 초기화합니다. |
CBrush::CreateSolidBrush |
지정된 단색으로 브러시를 초기화합니다. |
CBrush::CreateSysColorBrush |
기본 시스템 색인 브러시를 만듭니다. |
CBrush::FromHandle |
Windows HBRUSH 개체에 대한 핸들이 CBrush 지정되면 개체에 대한 포인터를 반환합니다. |
CBrush::GetLogBrush |
구조를 가져옵니다 LOGBRUSH . |
Public 연산자
속성 | 설명 |
---|---|
CBrush::operator HBRUSH |
개체에 연결된 Windows 핸들을 CBrush 반환합니다. |
설명
개체를 CBrush
사용하려면 개체를 CBrush
생성하고 브러시가 필요한 멤버 CDC
함수에 전달합니다.
브러시는 고체, 부화 또는 패턴화될 수 있습니다.
자세한 내용은 그래픽 개체를 CBrush
참조 하세요.
상속 계층 구조
CBrush
요구 사항
머리글: afxwin.h
CBrush::CBrush
CBrush
개체를 생성합니다.
CBrush();
CBrush(COLORREF crColor);
CBrush(int nIndex, COLORREF crColor);
explicit CBrush(CBitmap* pBitmap);
매개 변수
crColor
브러시의 전경색을 RGB 색으로 지정합니다. 브러시가 빗살 무늬인 경우 이 매개 변수는 빗살 무늬의 색을 지정합니다.
nIndex
브러시의 빗살 무늬 스타일을 지정합니다. 다음 값 중 하나일 수 있습니다.
HS_BDIAGONAL
45도에서 아래쪽 해치(왼쪽에서 오른쪽)HS_CROSS
가로 및 세로 크로스해치HS_DIAGCROSS
45도의 크로스해치HS_FDIAGONAL
45도의 위쪽 해치(왼쪽에서 오른쪽)HS_HORIZONTAL
가로 빗살 무늬HS_VERTICAL
세로 빗살 무늬
pBitmap
브러시가 CBitmap
그리는 비트맵을 지정하는 개체를 가리킵니다.
설명
CBrush
에는 4개의 오버로드된 생성자가 있습니다. 인수가 없는 생성자는 초기화해야 사용할 수 있는 초기화 CBrush
되지 않은 개체를 생성합니다.
인수 없이 생성자를 사용하는 경우 , CreateHatchBrush
, CreateBrushIndirect
CreatePatternBrush
또는 CreateDIBPatternBrush
.를 사용하여 결과 개체CreateSolidBrush
를 CBrush
초기화해야 합니다. 인수를 사용하는 생성자 중 하나를 사용하는 경우 더 이상 초기화가 필요하지 않습니다. 인수가 있는 생성자는 오류가 발생하는 경우 예외를 throw할 수 있지만 인수가 없는 생성자는 항상 성공합니다.
단일 COLORREF
매개 변수가 있는 생성자는 지정된 색으로 단색 브러시를 생성합니다. 색은 RGB 값을 지정하고 매크로를 RGB
WINDOWS.H
사용하여 생성할 수 있습니다.
두 개의 매개 변수가 있는 생성자는 해치 브러시를 생성합니다. 매개 변수는 nIndex
빗살 무늬 패턴의 인덱스를 지정합니다. 매개 변수는 crColor
색을 지정합니다.
매개 변수가 있는 CBitmap
생성자는 패턴 브러시를 생성합니다. 매개 변수는 비트맵을 식별합니다. 비트맵은 CBitmap::CreateBitmap
, CBitmap::CreateBitmapIndirect
또는 CBitmap::LoadBitmap
CBitmap::CreateCompatibleBitmap
. 채우기 패턴에서 사용할 비트맵의 최소 크기는 8픽셀 x 8픽셀입니다.
예시
// 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
구조체에 지정된 스타일, 색 및 패턴을 사용하여 브러시를 LOGBRUSH
초기화합니다.
BOOL CreateBrushIndirect(const LOGBRUSH* lpLogBrush);
매개 변수
lpLogBrush
브러시에 LOGBRUSH
대한 정보가 포함된 구조를 가리킵니다.
Return Value
함수가 성공하면 0이 아니고 그렇지 않으면 0입니다.
설명
이후에는 모든 디바이스 컨텍스트에 대한 현재 브러시로 브러시를 선택할 수 있습니다.
단색(1면, 픽셀당 1비트) 비트맵을 사용하여 만든 브러시는 현재 텍스트 및 배경색을 사용하여 그려집니다. 비트가 0으로 설정된 픽셀은 현재 텍스트 색으로 그려집니다. 비트가 1로 설정된 픽셀은 현재 배경색으로 그려집니다.
예시
// 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
DIB(디바이스 독립적 비트맵)로 지정된 패턴을 사용하여 브러시를 초기화합니다.
BOOL CreateDIBPatternBrush(
HGLOBAL hPackedDIB,
UINT nUsage);
BOOL CreateDIBPatternBrush(
const void* lpPackedDIB,
UINT nUsage);
매개 변수
hPackedDIB
압축된 DIB(디바이스 독립적 비트맵)를 포함하는 전역 메모리 개체를 식별합니다.
nUsage
데이터 구조의 BITMAPINFO
필드("압축된 DIB"의 일부)에 명시적 RGB 값 또는 인덱스가 현재 실현된 논리 팔레트에 포함되는지 여부를 bmiColors[]
지정합니다. 매개 변수는 다음 값 중 하나여야 합니다.
DIB_PAL_COLORS
색 테이블은 16비트 인덱스의 배열로 구성됩니다.DIB_RGB_COLORS
색 테이블에는 리터럴 RGB 값이 포함됩니다.
lpPackedDIB
구조체로 구성된 BITMAPINFO
압축된 DIB를 가리킨 다음 비트맵의 픽셀을 정의하는 바이트 배열을 가리킵니다.
Return Value
성공하면 0이 아니고, 그렇지 않으면 0입니다.
설명
이후에 래스터 작업을 지원하는 모든 디바이스 컨텍스트에 대해 브러시를 선택할 수 있습니다.
두 버전은 DIB를 처리하는 방식과 다릅니다.
첫 번째 버전에서 DIB에 대한 핸들을 얻으려면 Windows
GlobalAlloc
함수를 호출하여 전역 메모리 블록을 할당한 다음 압축된 DIB로 메모리를 채웁니다.두 번째 버전에서는 압축된 DIB에 대한 메모리를 할당하기 위해 호출
GlobalAlloc
할 필요가 없습니다.
압축된 DIB는 BITMAPINFO
데이터 구조 바로 뒤에 비트맵의 픽셀을 정의하는 바이트 배열로 구성됩니다. 채우기 패턴으로 사용되는 비트맵은 8픽셀 x 8픽셀이어야 합니다. 비트맵이 더 큰 경우 Windows는 비트맵의 왼쪽 위 모서리에 있는 처음 8개 행과 8개의 픽셀 열에 해당하는 비트만 사용하여 채우기 패턴을 만듭니다.
애플리케이션이 단색 디바이스 컨텍스트로 2색 DIB 패턴 브러시를 선택하면 Windows는 DIB에 지정된 색을 무시하고 대신 디바이스 컨텍스트의 현재 텍스트 및 배경색을 사용하여 패턴 브러시를 표시합니다. DIB의 첫 번째 색(DIB 색 표의 오프셋 0)에 매핑된 픽셀은 텍스트 색을 사용하여 표시됩니다. 두 번째 색에 매핑된 픽셀(색 표의 오프셋 1)은 배경색을 사용하여 표시됩니다.
다음 Windows 함수를 사용하는 방법에 대한 자세한 내용은 Windows SDK를 참조하세요.
CreateDIBPatternBrush
(이 함수는 3.0 이전 버전의 Windows용으로 작성된 애플리케이션과의 호환성을 위해서만 제공됩니다. 함수를CreateDIBPatternBrushPt
사용합니다.)CreateDIBPatternBrushPt
(이 함수는 Win32 기반 애플리케이션에 사용해야 합니다.)
예시
// 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
지정된 빗살 무늬 및 색으로 브러시를 초기화합니다.
BOOL CreateHatchBrush(
int nIndex,
COLORREF crColor);
매개 변수
nIndex
브러시의 빗살 무늬 스타일을 지정합니다. 다음 값 중 하나일 수 있습니다.
HS_BDIAGONAL
45도에서 아래쪽 해치(왼쪽에서 오른쪽)HS_CROSS
가로 및 세로 크로스해치HS_DIAGCROSS
45도의 크로스해치HS_FDIAGONAL
45도의 위쪽 해치(왼쪽에서 오른쪽)HS_HORIZONTAL
가로 빗살 무늬HS_VERTICAL
세로 빗살 무늬
crColor
브러시의 전경색을 RGB 색(빗살 무늬의 색)으로 지정합니다. 자세한 내용은 Windows SDK를 참조 COLORREF
하세요.
Return Value
성공하면 0이 아니고, 그렇지 않으면 0입니다.
설명
이후에는 모든 디바이스 컨텍스트에 대한 현재 브러시로 브러시를 선택할 수 있습니다.
예시
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
비트맵으로 지정된 패턴을 사용하여 브러시를 초기화합니다.
BOOL CreatePatternBrush(CBitmap* pBitmap);
매개 변수
pBitmap
비트맵을 식별합니다.
Return Value
성공하면 0이 아니고, 그렇지 않으면 0입니다.
설명
이후에 래스터 작업을 지원하는 모든 디바이스 컨텍스트에 대해 브러시를 선택할 수 있습니다. 식별되는 pBitmap
비트맵은 일반적으로 , CBitmap::CreateBitmapIndirect
또는 CBitmap::LoadBitmap
CBitmap::CreateCompatibleBitmap
함수를 CBitmap::CreateBitmap
사용하여 초기화됩니다.
채우기 패턴으로 사용되는 비트맵은 8픽셀 x 8픽셀이어야 합니다. 비트맵이 더 큰 경우 Windows는 비트맵의 왼쪽 위 모서리에 있는 처음 8개 행 및 픽셀 열에 해당하는 비트만 사용합니다.
연결된 비트맵에 영향을 주지 않고 패턴 브러시를 삭제할 수 있습니다. 즉, 비트맵을 사용하여 다양한 패턴 브러시를 만들 수 있습니다.
단색 비트맵(1 색 평면, 픽셀당 1비트)을 사용하여 만든 브러시는 현재 텍스트 및 배경색을 사용하여 그려집니다. 비트가 0으로 설정된 픽셀은 현재 텍스트 색으로 그려집니다. 비트가 1로 설정된 픽셀은 현재 배경색으로 그려집니다.
Windows 함수 사용에 CreatePatternBrush
대한 자세한 내용은 Windows SDK를 참조하세요.
예시
// 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
지정된 단색으로 브러시를 초기화합니다.
BOOL CreateSolidBrush(COLORREF crColor);
매개 변수
crColor
COLORREF
브러시의 색을 지정하는 구조체입니다. 색은 RGB 값을 지정하고 매크로를 RGB
WINDOWS.H
사용하여 생성할 수 있습니다.
Return Value
성공하면 0이 아니고, 그렇지 않으면 0입니다.
설명
이후에는 모든 디바이스 컨텍스트에 대한 현재 브러시로 브러시를 선택할 수 있습니다.
애플리케이션이 만든 CreateSolidBrush
브러시 사용을 마쳤으면 디바이스 컨텍스트에서 브러시를 선택해야 합니다.
예시
CBrush::CBrush
에 대한 예를 참조하세요.
CBrush::CreateSysColorBrush
브러시 색을 초기화합니다.
BOOL CreateSysColorBrush(int nIndex);
매개 변수
nIndex
색 인덱스를 지정합니다. 이 값은 21개의 창 요소 중 하나를 그리는 데 사용되는 색에 해당합니다. 값 목록은 Windows SDK를 참조 GetSysColor
하세요.
Return Value
성공하면 0이 아니고, 그렇지 않으면 0입니다.
설명
이후에는 모든 디바이스 컨텍스트에 대한 현재 브러시로 브러시를 선택할 수 있습니다.
애플리케이션이 만든 CreateSysColorBrush
브러시 사용을 마쳤으면 디바이스 컨텍스트에서 브러시를 선택해야 합니다.
예시
// 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
개체에 대한 핸들이 CBrush
지정되면 개체에 대한 포인터를 반환합니다.
static CBrush* PASCAL FromHandle(HBRUSH hBrush);
매개 변수
hBrush
Windows GDI 브러시에 대한 HANDLE입니다.
Return Value
성공하면 개체에 대한 포인터입니다 CBrush
. 그렇지 않으면 NULL
.
설명
개체가 CBrush
핸들에 아직 연결되지 않은 경우 임시 CBrush
개체가 만들어지고 연결됩니다. 이 임시 CBrush
개체는 다음에 애플리케이션이 이벤트 루프에서 유휴 시간이 될 때까지만 유효합니다. 이때 모든 임시 그래픽 개체가 삭제됩니다. 즉, 임시 개체는 하나의 창 메시지를 처리하는 동안에만 유효합니다.
그래픽 개체 사용에 대한 자세한 내용은 Windows SDK의 그래픽 개체를 참조하세요.
예시
CBrush::CBrush에 대한 예제를 참조하세요.
CBrush::GetLogBrush
이 멤버 함수를 호출하여 구조를 검색합니다 LOGBRUSH
.
int GetLogBrush(LOGBRUSH* pLogBrush);
매개 변수
pLogBrush
브러시에 LOGBRUSH
대한 정보가 포함된 구조를 가리킵니다.
Return Value
함수가 성공하고 pLogBrush
유효한 포인터인 경우 반환 값은 버퍼에 저장된 바이트 수입니다.
함수가 성공하면 pLogBrush
NULL
반환 값은 함수가 버퍼에 저장할 정보를 저장하는 데 필요한 바이트 수입니다.
함수가 실패하면 반환 값은 0입니다.
설명
구조체는 LOGBRUSH
브러시의 스타일, 색 및 패턴을 정의합니다.
예를 들어 비트맵의 특정 색 또는 패턴과 일치하도록 호출 GetLogBrush
합니다.
예시
// 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
이 연산자를 사용하여 개체의 연결된 Windows GDI 핸들을 가져옵니다 CBrush
.
operator HBRUSH() const;
Return Value
성공하면 개체가 나타내는 Windows GDI 개체에 대한 핸들입니다 CBrush
. 그렇지 않으면 NULL
.
설명
이 연산자는 개체의 직접 사용을 지원하는 캐스팅 연산자입니다 HBRUSH
.
그래픽 개체 사용에 대한 자세한 내용은 Windows SDK의 그래픽 개체를 참조하세요.
예시
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);