bitmaps Device-Dependent
Os DDBs (bitmaps dependentes do dispositivo) são descritos usando uma única estrutura, a estrutura BITMAP . Os membros dessa estrutura especificam a largura e a altura de uma região retangular, em pixels; a largura da matriz que mapeia entradas da paleta de dispositivos para pixels; e o formato de cor do dispositivo, em termos de planos de cores e bits por pixel. Um aplicativo pode recuperar o formato de cor de um dispositivo chamando a função GetDeviceCaps e especificando as constantes apropriadas. Observe que um DDB não contém valores de cor; Em vez disso, as cores estão em um formato dependente do dispositivo. Para obter mais informações, consulte Cor em Bitmaps. Como cada dispositivo pode ter seu próprio conjunto de cores, um DDB criado para um dispositivo pode não ser exibido bem em um dispositivo diferente.
Para usar um DDB em um contexto de dispositivo, ele deve ter a organização de cores desse contexto de dispositivo. Portanto, um DDB geralmente é chamado de bitmap compatível e geralmente tem melhor desempenho de GDI do que um DIB. Por exemplo, para criar um bitmap para memória de vídeo, é melhor usar um bitmap compatível com o mesmo formato de cor que a exibição primária. Uma vez na memória de vídeo, renderizar para o bitmap e exibi-lo na tela é significativamente mais rápido do que de uma superfície de memória do sistema ou diretamente de um DIB.
Além de habilitar um melhor desempenho de GDI, bitmaps compatíveis são usados para capturar imagens (consulte Capturando uma imagem ) e para criar bitmaps em tempo de execução para menus, confira "Criando o bitmap" em (consulte Usando menus ).
Para transferir um bitmap entre dispositivos com organização de cores diferente, use GetDIBits para converter o bitmap compatível em um DIB e chamar SetDIBits ou StretchDIBits para exibir o DIB no segundo dispositivo.
Há dois tipos de DDBs: descarte e não confiável. Um DDB descartado é um bitmap que o sistema descarta se o bitmap não estiver selecionado em um DC e se a memória do sistema estiver baixa. A função CreateDiscardableBitmap cria bitmaps descartados. As funções CreateBitmap, CreateCompatibleBitmap e CreateBitmapIndirect criam bitmaps indisponíveis.
Um aplicativo pode criar um DDB de um DIB inicializando as estruturas necessárias e chamando a função CreateDIBitmap . Especificar CBM_INIT na chamada para CreateDIBitmap é equivalente a chamar a função CreateCompatibleBitmap para criar um DDB no formato do dispositivo e, em seguida, chamar a função SetDIBits para traduzir os bits DIB para o DDB. Para determinar se um dispositivo dá suporte à função SetDIBits , chame a função GetDeviceCaps , especificando RC_DI_BITMAP como o sinalizador RASTERCAPS.