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.

 

Valor Significado
ICM_ON
Ativa o gerenciamento de cores. Desativa a correção de cor de estilo antigo de meio-tom.
ICM_OFF
Desativa o gerenciamento de cores. Ativa a correção de cor de estilo antigo de meio-tom.
ICM_QUERY
Consulta o estado atual do gerenciamento de cores.
ICM_DONE_OUTSIDEDC
Desativa o gerenciamento de cores dentro do DC. No Windows 2000, também desativa a correção de cores de estilo antigo de halftones. Sem suporte no Windows 95.

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

Confira também