Device-Dependent Bitmaps
Os bitmaps dependentes de dispositivo (DDBs) são descritos usando uma única estrutura, a BITMAP estrutura. Os membros desta estrutura especificam a largura e 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 cores do dispositivo, em termos de planos de cores e bits por pixel. Um aplicativo pode recuperar o formato de cor de um dispositivo chamando o 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 bem exibido 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. Assim, um DDB é frequentemente chamado de bitmap compatível com e geralmente tem melhor desempenho 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 da exibição principal. Uma vez na memória de vídeo, a renderização para o bitmap e exibi-lo na tela são significativamente mais rápidos do que a partir de uma superfície de memória do sistema ou diretamente de um DIB.
Além de permitir um melhor desempenho 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 consulte "Criando o bitmap" em (consulte Usando menus ).
Para transferir um bitmap entre dispositivos com organização de cores diferentes, use GetDIBits para converter o bitmap compatível em um DIB e chame SetDIBits ou StretchDIBits para exibir o DIB para o segundo dispositivo.
Existem dois tipos de DDBs: descartáveis e não descartáveis. Um DDB descartável é 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çãoCreateDiscardableBitmap cria bitmaps descartáveis. O CreateBitmap, CreateCompatibleBitmape funções de CreateBitmapIndirect criam bitmaps não descartáveis.
Um aplicativo pode criar um DDB a partir de um DIB inicializando as estruturas necessárias e chamando a funçãoCreateDIBitmap. Especificar CBM_INIT na chamada para CreateDIBitmap equivale a chamar a função CreateCompatibleBitmap para criar um DDB no formato do dispositivo e, em seguida, chamar a funçãoSetDIBits para traduzir os bits DIB para o DDB. Para determinar se um dispositivo suporta a função SetDIBits, chame a funçãoGetDeviceCaps, especificando RC_DI_BITMAP como o sinalizador RASTERCAPS.