Paletas

As funções DrawDib exigem que um aplicativo responda a duas mensagens orientadas a paleta: WM_QUERYNEWPALETTE e WM_PALETTECHANGED. Se o aplicativo não estiver ciente da paleta, você precisará adicionar um manipulador para cada uma dessas mensagens. Para obter mais informações sobre como processar as mensagens WM_QUERYNEWPALETTE e WM_PALETTECHANGED , consulte Adicionando manipuladores de mensagens de paleta.

Você pode perceber a paleta DrawDib atual para o DC usando a função DrawDibRealize . Você deve perceber a paleta em resposta à mensagem WM_QUERYNEWPALETTE ou WM_PALETTECHANGED ou ao se preparar para exibir uma sequência de imagens usando a função DrawDibDraw .

Você pode desenhar uma imagem mapeada para outra paleta usando a função DrawDibSetPalette . Essa função força o DC DrawDib a usar a paleta especificada, o que pode afetar a qualidade da imagem. Por exemplo, um aplicativo com reconhecimento de paleta pode ter percebido uma paleta e precisa impedir que DrawDib perceba sua própria paleta. O aplicativo pode usar DrawDibSetPalette para notificar DrawDib sobre a paleta a ser usada.

Você pode obter um identificador da paleta de primeiro plano atual usando a função DrawDibGetPalette . Se o aplicativo usa a paleta de primeiro plano atual, ele não tem uso exclusivo da paleta e outro aplicativo pode invalidar o identificador de paleta. Seu aplicativo não deve liberar a paleta quando você terminar de usá-la. Liberar a paleta pode invalidar o identificador de paleta para outro aplicativo.

Você pode preparar DrawDib para receber novos valores de cor para sua paleta usando a função DrawDibChangePalette . No código a seguir , DrawDibChangePalette, atribua novos valores para a tabela de cores da paleta. Se o sinalizador DDF_ANIMATE não estiver definido no DC DrawDib quando você chamar DrawDibChangePalette, poderá aplicar as alterações de paleta usando DrawDibRealize para realizar a paleta. Em seguida, você pode usar DrawDibDraw para redesenhar a imagem. Se o sinalizador DDF_ANIMATE estiver definido no DC DrawDib, você poderá animar a paleta e as cores do bitmap exibido usando DrawDibDraw ou DrawDibRealize. Você pode atualizar o sinalizador DDF_ANIMATE usando as funções DrawDibEnd e DrawDibBegin .

Observação

Se você liberar a paleta DrawDib enquanto ela estiver selecionada por um DC, um erro de GDI (interface de dispositivo gráfico) poderá resultar quando o DC usar a paleta. Em vez disso, seu aplicativo deve usar DrawDibSetPalette para alterar o DC DrawDib para usar a paleta padrão ou outra paleta.

 

As funções DrawDibEnd, DrawDibClose e DrawDibBegin podem liberar a paleta DrawDib. No entanto, essas funções devem ser usadas somente quando a paleta não tiver sido selecionada pelo controlador de domínio. A função DrawDibDraw também pode liberar a paleta quando usa o mesmo DC DrawDib, mas especifica parâmetros de desenho diferentes (lpbi, dxDst, dyDst, dxSrc ou dySrc) ou um formato diferente.

Renderização de imagem