Compartilhar via


Paleta lógica

Uma paleta lógica é uma paleta de cores que um aplicativo cria e associa a um determinado contexto de dispositivo. Paletas lógicas permitem que os aplicativos definam e usem cores que atendam às suas necessidades específicas. Os aplicativos podem criar qualquer número de paletas lógicas, usando-as para contextos de dispositivo separados ou alternando entre eles para um único contexto de dispositivo. O número máximo de paletas que um aplicativo pode criar depende dos recursos do sistema.

Um aplicativo cria uma paleta lógica usando a função CreatePalette . O aplicativo preenche uma estrutura LOGPALETTE , que especifica o número de entradas e os valores de cor para cada entrada e, em seguida, o aplicativo passa a estrutura para CreatePalette. A função retorna um identificador de paleta que o aplicativo usa em todas as operações subsequentes para identificar a paleta. Para usar cores na paleta lógica, o aplicativo seleciona a paleta em um contexto de dispositivo usando a função SelectPalette e, em seguida, percebe a paleta usando a função RealizePalette . As cores na paleta estarão disponíveis assim que a paleta lógica for realizada.

Um aplicativo deve limitar o tamanho de suas paletas lógicas a entradas suficientes para representar as cores necessárias. Os aplicativos não podem criar paletas lógicas maiores que o tamanho máximo da paleta, um valor dependente do dispositivo. Os aplicativos podem obter o tamanho máximo usando a função GetDeviceCaps para recuperar o valor SIZEPALETTE.

Embora um aplicativo possa especificar qualquer valor de cor para uma determinada entrada em uma paleta lógica, nem todas as cores podem ser geradas pelo dispositivo fornecido. O sistema não fornece uma maneira de descobrir quais cores têm suporte, mas o aplicativo pode descobrir o número total dessas cores recuperando a resolução de cores do dispositivo. A resolução de cores, especificada em bits de cor por pixel, é igual ao valor COLORRES retornado pela função GetDeviceCaps . Um dispositivo que tem uma resolução de cores de 18 tem 262.144 cores possíveis. Se um aplicativo solicitar uma cor sem suporte, o sistema escolherá uma aproximação apropriada.

Depois que uma paleta lógica é criada, um aplicativo pode alterar as cores na paleta usando a função SetPaletteEntries . Se a paleta lógica tiver sido selecionada e realizada, a alteração da paleta não afetará imediatamente as cores que estão sendo exibidas. O aplicativo deve usar as funções UnrealizeObject e RealizePalette para atualizar as cores. Em alguns casos, o aplicativo pode precisar desmarcar, desmarcar, selecionar e realizar a paleta lógica para garantir que as cores sejam atualizadas exatamente conforme solicitado. Se um aplicativo selecionar uma paleta lógica em mais de um contexto de dispositivo, as alterações na paleta lógica afetarão todos os contextos do dispositivo para os quais ele está selecionado.

Um aplicativo pode alterar o número de entradas em uma paleta lógica usando a função ResizePalette . Se o aplicativo reduzir o tamanho, as entradas restantes ficarão inalteradas. Se o aplicativo estender o tamanho, o sistema definirá a cor de cada nova entrada como preta (0, 0, 0) e o sinalizador como zero.

Um aplicativo pode recuperar os valores de cor e sinalizador para entradas em uma determinada paleta lógica usando a função GetPaletteEntries . Um aplicativo pode recuperar o índice da entrada em uma determinada paleta lógica que corresponde mais de perto a um valor de cor especificado usando a função GetNearestPaletteIndex .

Quando um aplicativo não precisa mais de uma paleta lógica, ele pode excluí-lo usando a função DeleteObject . O aplicativo deve verificar se a paleta lógica não está mais selecionada em um contexto de dispositivo antes de excluir a paleta.