Função SetICMMode (wingdi.h)
A função SetICMMode faz com que o Gerenciamento de Cores de Imagem seja habilitado, desabilitado ou consultado em um determinado DC (contexto de dispositivo).
Sintaxe
int SetICMMode(
HDC hdc,
int mode
);
Parâmetros
hdc
Identifica o identificador para o contexto do dispositivo.
mode
Ativa e desativa o gerenciamento de cores da imagem. Esse parâmetro pode ter um dos seguintes valores constantes.
Retornar valor
Se essa função for bem-sucedida, o valor retornado será um valor diferente de zero.
Se essa função falhar, o valor retornado será zero.
Se ICM_QUERY for especificado e a função for bem-sucedida, o valor diferente de zero retornado será ICM_ON ou ICM_OFF para indicar o modo atual.
Comentários
Se o sistema não conseguir encontrar um perfil de cor ICC para corresponder ao estado do dispositivo, SetICMMode falhará e retornará zero.
Depois que o WCS estiver habilitado para um DC (contexto de dispositivo), as cores passadas para o DC usando a maioria das funções de API do Win32 serão correspondidas por cores. As exceções primárias são BitBlt e StretchBlt. A suposição é que, ao executar uma blit (transferência de bloco de bits) de um controlador de domínio para outro, os dois DCs já são compatíveis e não precisam de correção de cor. Se esse não for o caso, a correção de cor poderá ser executada. Especificamente, se um DIB (bitmap independente do dispositivo) for usado como a origem de um blit e o blit for executado em um DC que tenha o WCS habilitado, a correspondência de cores será executada. Se isso não for o que você deseja, desative o WCS para o DC de destino chamando SetICMMode antes de chamar BitBlt ou StretchBlt.
Se a função CreateCompatibleDC for usada para criar um bitmap em um DC, é possível que o bitmap seja correspondido duas vezes, uma vez quando ele é criado e uma vez quando um blit é executado. O motivo é que um bitmap em um DC criado pela função CreateCompatibleDC adquire o pincel, as canetas e a paleta atuais do DC de origem. No entanto, o WCS será desabilitado por padrão para o novo DC. Se o WCS for habilitado posteriormente para o novo DC usando a função SetICMMode , uma correção de cor será feita. Para evitar correções de cor dupla por meio do uso da função CreateCompatibleDC , use a função SetICMMode para desativar o WCS para o DC de origem antes que a função CreateCompatibleDC seja chamada.
Quando um DC compatível é criado a partir do DC de uma impressora (consulte CreateCompatibleDC ), o padrão é que a correspondência de cores sempre seja executada se estiver habilitada para o DC da impressora. O perfil de cor padrão da impressora é usado quando um blit é executado no DC da impressora usando SetDIBitsToDevice ou StretchDIBits. Se não for isso que você deseja, desative o WCS para o DC da impressora chamando SetICMMode antes de chamar SetDIBitsToDevice ou StretchDIBits.
Além disso, ao imprimir no DC de uma impressora com o WCS ativado, a função SetICMMode precisa ser chamada após cada chamada para a função StartPage para ativar novamente o WCS. A função StartPage chama as funções RestoreDC e SaveDC , o que resulta na desativação do WCS para o DC da impressora.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | wingdi.h |
Biblioteca | Gdi32.lib |
DLL | Gdi32.dll |