CBrush::CreateDIBPatternBrush
Inicializa um pincel com o padrão especificado por um bitmap independente (DIB).
BOOL CreateDIBPatternBrush(
HGLOBAL hPackedDIB,
UINT nUsage
);
BOOL CreateDIBPatternBrush(
const void* lpPackedDIB,
UINT nUsage
);
Parâmetros
hPackedDIB
Identifica um objeto de globais - memória que contém um bitmap independente de pacote (DIB).nUsage
Especifica se os campos de bmiColors[] da estrutura de dados de BITMAPINFO (“parte de DIB empacotado”) contêm valores ou índices explícitos RGB em paleta lógica atualmente executada.O parâmetro deve ser um dos seguintes valores:DIB_PAL_COLORS a tabela de cores consiste em uma matriz de índices de 16 bits.
DIB_RGB_COLORS a tabela de cores contém valores literais de RGB.
lpPackedDIB
Os pontos a DIB pacote que consiste em BITMAPINFO estrutura seguido imediatamente por uma matriz de bytes que definem os pixels de bitmap.
Valor de retorno
Diferente de zero se com êxito; se não 0.
Comentários
O pincel posteriormente pode ser selecionada para qualquer contexto de dispositivo que oferecer suporte a operações de varredura.
As duas versões diferem da maneira que você manipula DIB:
Em a primeira versão, para obter um identificador para DIB você chama a função de GlobalAlloc do windows para atribuir um bloco de memória e global para preencher na memória com DIB empacotado.
Em a segunda versão, não é necessário chamar GlobalAlloc para alocar memória para DIB empacotado.
DIB empacotado consiste em um estrutura de dados de BITMAPINFO seguido imediatamente pela matriz de bytes que define os pixels de bitmap.Bitmaps usados como padrões de preenchimento devem ser 8 pixels por 8 pixels.Se o bitmap é maior, o cria um padrão de preenchimento usando somente os bits que correspondem às primeiras linhas 8 e 8 colunas de pixels no canto superior esquerdo de bitmap.
Quando um aplicativo seleciona um pincel de duas cores padrão de DIB em um contexto monocromático de dispositivo, janelas ignoram as cores especificadas em DIB e exibem em vez do pincel de padrão usando o texto e as cores de plano de fundo atual do contexto de dispositivo.Os pixels mapeados para a primeira cor (deslocado de 0 na tabela de cores de DIB) de DIB são exibidos usando a cor do texto.Os pixels mapeados para a segunda cor (deslocado de 1 na tabela de cores) são exibidos usando a cor do plano de fundo.
Para obter informações sobre como usar as seguintes funções do windows, consulte Windows SDK:
CreateDIBPatternBrush (somente essa função é fornecida para compatibilidade com aplicativos escritos para versões anteriores do windows de 3,0; use a função de CreateDIBPatternBrushPt .)
CreateDIBPatternBrushPt (essa função deve ser usada para aplicativos de Win32-based.)
Exemplo
// 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);
}
}
Requisitos
Cabeçalho: afxwin.h