Compartilhar via


Método ImageAttributes::ClearColorKey (gdiplusimageattributes.h)

O método ImageAttributes::ClearColorKey limpa a chave de cor (intervalo de transparência) para uma categoria especificada.

Sintaxe

Status ClearColorKey(
  [in, optional] ColorAdjustType type
);

Parâmetros

[in, optional] type

Tipo: ColorAdjustType

Elemento da enumeração ColorAdjustType que especifica a categoria para a qual a chave de cor é desmarcada. O valor padrão é ColorAdjustTypeDefault.

Valor retornado

Tipo: Status

Se o método for bem-sucedido, ele retornará Ok, que é um elemento da enumeração Status .

Se o método falhar, ele retornará um dos outros elementos da enumeração Status .

Comentários

Um objeto ImageAttributes mantém as configurações de cor e escala de cinza para cinco categorias de ajuste: padrão, bitmap, pincel, caneta e texto. Por exemplo, você pode especificar uma chave de cor para a categoria padrão, uma chave de cor diferente para a categoria bitmap e ainda uma chave de cor diferente para a categoria de caneta.

As configurações padrão de ajuste de cor e escala de cinza se aplicam a todas as categorias que não têm configurações de ajuste próprias. Por exemplo, se você nunca especificar nenhuma configuração de ajuste para a categoria de caneta, as configurações padrão se aplicarão à categoria de caneta.

Assim que você especificar uma configuração de ajuste de escala de cinza ou cor para uma determinada categoria, as configurações de ajuste padrão não se aplicam mais a essa categoria. Por exemplo, suponha que você especifique uma chave de cor padrão que torne qualquer cor com um componente vermelho de 200 a 255 transparente e especifique um valor gama padrão de 1,8. Se você definir a chave de cor da categoria de caneta chamando ImageAttributes::SetColorKey, a chave de cor padrão e o valor gama padrão não serão aplicados a canetas. Se você limpar posteriormente a chave de cor da caneta chamando ImageAttributes::ClearColorKey, a categoria da caneta não reverter à chave de cor padrão; em vez disso, a categoria de caneta não terá nenhuma chave de cor. Da mesma forma, a categoria de caneta não reverter ao valor gama padrão; em vez disso, a categoria de caneta não terá nenhum valor gama.

Exemplos

O exemplo a seguir cria um objeto Image de um arquivo .emf. O código também cria um objeto ImageAttributes . A primeira chamada para ImageAttributes::SetColorKey define a chave de cor padrão do objeto ImageAttributes para que as cores com um componente vermelho de 80 a 120 sejam transparentes. A segunda chamada para ImageAttributes::SetColorKey define a chave de cor da caneta do objeto ImageAttributes para que todas as cores com um componente vermelho de 135 a 175 sejam transparentes.

O código chama DrawImage uma vez para desenhar a imagem sem nenhum ajuste de cor. Em seguida, o código chama DrawImage mais três vezes, cada vez passando o endereço do objeto Image e o endereço do objeto ImageAttributes . Na segunda vez que a imagem é desenhada (após a chamada que define a chave de cor padrão), todo o vermelho de 80 a 120 é transparente. Na terceira vez que a imagem é desenhada (após a chamada que define a tecla de cor da caneta), todo o vermelho de 135 a 175 desenhado com uma caneta é transparente. Além disso, todo o vermelho de 80 a 120 que não é desenhado com uma caneta é transparente. Na quarta vez que a imagem é desenhada (após a chamada para ImageAttributes::ClearColorKey), nenhum dos vermelhos desenhados com uma caneta é transparente. Além disso, todo o vermelho de 80 a 120 que não é desenhado com uma caneta é transparente.


VOID Example_SetClearColorKey(HDC hdc)
{
   Graphics graphics(hdc);

   Image image(L"TestMetafile5.emf");
   ImageAttributes imAtt;

   // Draw the image (metafile) using no color adjustment.
   graphics.DrawImage(
      &image,
      Rect(0, 0, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),        // source rect
      UnitPixel);

   // Set the default color key.
   imAtt.SetColorKey(
      Color(0, 80, 0, 0),
      Color(255, 120, 255, 255),
      ColorAdjustTypeDefault);

   // Draw the image (metafile) using default color adjustment.
   // Colors with red components from 80 through 120 are transparent.
   graphics.DrawImage(
      &image,
      Rect(0, 100, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),          // source rect
      UnitPixel,
      &imAtt);

   // Set the pen color key.
   imAtt.SetColorKey(
      Color(0, 135, 0, 0),
      Color(255, 175, 255, 255),
      ColorAdjustTypePen);

   // Draw the image (metafile) using default and pen adjustment.
   // Colors drawn with a pen that have red components from 135 through 175
   // are transparent. Colors not drawn with a pen that have red components
   // from 80 to 120 are transparent.
   graphics.DrawImage(
      &image,
      Rect(0, 200, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),          // source rect
      UnitPixel,
      &imAtt);

   // Clear the pen color key.
   imAtt.ClearColorKey(ColorAdjustTypePen);

   // Draw the image (metafile) using only default color adjustment.
   // No colors drawn with a pen are transparent. Colors not drawn with 
   // a pen that have red components from 80 to 120 are transparent.
   graphics.DrawImage(
      &image,
      Rect(0, 300, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),          // source rect
      UnitPixel,
      &imAtt); 
}
				

O código anterior, juntamente com um arquivo específico, TestMetafile5.png, produziu a saída a seguir. As barras na coluna esquerda foram desenhadas com uma caneta e as barras na coluna direita foram preenchidas com um pincel. A chave de cor padrão se aplica às barras preenchidas com um pincel. A chave de cor que se aplica às barras desenhadas com uma caneta varia de acordo com as chamadas ImageAttributes::SetColorKey e ImageAttributes::ClearColorKey .

Ilustração mostrando barras em quatro linhas de duas colunas cada; os dois últimos têm números diferentes de barras em cada linha

Requisitos

   
Cliente mínimo com suporte Windows XP, 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 gdiplusimageattributes.h (inclua Gdiplus.h)
Biblioteca Gdiplus.lib
DLL Gdiplus.dll

Confira também

Bitmap

Cor

Coloradjusttype

Imagem

Imageattributes

ImageAttributes::ClearThreshold

ImageAttributes::SetColorKey

ImageAttributes::SetThreshold

Metarquivo

Recolorir