CBrush::CreateDIBPatternBrush
Инициализирует кисть с шаблон указанного файла DIB (DIB).
BOOL CreateDIBPatternBrush(
HGLOBAL hPackedDIB,
UINT nUsage
);
BOOL CreateDIBPatternBrush(
const void* lpPackedDIB,
UINT nUsage
);
Параметры
hPackedDIB
Указывает объект глобальный- памяти, содержащий упаковыванное файла DIB (DIB).nUsage
Определяет, содержат ли поля bmiColors[] структуры данных BITMAPINFO "(части упакованного DIB") явные значения rgb или индексы в настоящее время осуществлянную логической палитры. Параметр должен иметь одно из следующих значений:DIB_PAL_COLORS Таблица цвета состоит из массива 16 разрядных индексов.
DIB_RGB_COLORS Таблица цветов содержит литералы rgb.
lpPackedDIB
Указывает на упаковыванному DIB, состоящий из BITMAPINFO составляющих непосредственно за массивом байтов, определяющий точки растрового изображения.
Возвращаемое значение
Ненулевой, если успешно; в противном случае – значение 0.
Заметки
Кисть может затем выбрать любой операции растровый контекста устройства, чтобы обозреватель.
2 Версий отличаются способом выполняется обработка DIB:
В первой версии, чтобы получить дескриптор DIB вызове функции Windows GlobalAlloc, чтобы выделить блок глобальной памяти и затем заполнения память с упаковыванным DIB.
Во второй версии, не должны вызываться GlobalAlloc выделить память для упакованного DIB.
Упаковыванное DIB состоит из структуры данных BITMAPINFO непосредственно за массив байтов, который определяет точки растрового изображения. Растровые изображения, используемые в качестве шаблонов заполнения должны быть 8 пикселей 8 точек. Если растровое изображение превышает Windows создает шаблон заполнения, используя только биты, соответствующие первых 8 строк и 8 столбцов пикселей растрового изображения в верхнем левом углу.
Когда приложение выбирает 2 кисти шаблона цветов рисунка DIB в контекст устройства, монохромного Windows не учитывает цвета, указанные в DIB и вместо указывает кисть шаблона с использованием текущих текста и цвет фона контекста устройства. Точки, сопоставленные к первому цвету (в позиции 0 в таблице цветов рисунка DIB) DIB обозначаются цвет текста. Точки, сопоставленные ко второму цвету (в таблице цвет на некотором смещении от 1) отображаются с помощью цвета фона.
Дополнительные сведения об использовании следующих функций Windows см. в разделе Windows SDK:
CreateDIBPatternBrush (эта функция предоставляется только для совместимости с приложениями Windows, созданные для версий более ранних, чем 3,0; используйте функцию 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);
}
}
Требования
Header: afxwin.h