Поделиться через


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

  • GlobalAlloc

Пример

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

См. также

Ссылки

Класс CBrush

Диаграмма иерархии

CBrush::CreatePatternBrush

CBrush::CreateBrushIndirect

CBrush::CreateSolidBrush

CBrush::CreateHatchBrush

CGdiObject::CreateStockObject

CDC::SelectObject

CGdiObject::DeleteObject

CDC::GetBrushOrg

CDC::SetBrushOrg