Метод ImageAttributes::ClearColorKey (gdiplusimageattributes.h)

Метод ImageAttributes::ClearColorKey очищает ключ цвета (диапазон прозрачности) для указанной категории.

Синтаксис

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

Параметры

[in, optional] type

Тип: ColorAdjustType

Элемент перечисления ColorAdjustType , указывающий категорию, для которой очищается ключ цвета. Значение по умолчанию — ColorAdjustTypeDefault.

Возвращаемое значение

Тип: Состояние

В случае успешного выполнения метода возвращается ОК, который является элементом перечисления Status .

Если метод завершается ошибкой, он возвращает один из других элементов перечисления Status .

Комментарии

Объект ImageAttributes поддерживает параметры цвета и оттенков серого для пяти категорий корректировки: по умолчанию, точечный рисунок, кисть, перо и текст. Например, можно указать один цвет для категории по умолчанию, другой цвет для категории точечных рисунков и другой цвет для категории пера.

Параметры настройки цветов и оттенков серого по умолчанию применяются ко всем категориям, у которых нет собственных параметров настройки. Например, если вы никогда не указываете параметры корректировки для категории пера, то параметры по умолчанию применяются к категории пера.

Как только вы укажете параметр настройки цветов или оттенков серого для определенной категории, параметры настройки по умолчанию больше не применяются к этой категории. Например, предположим, что вы указали ключ цвета по умолчанию, который делает любой цвет с красным компонентом от 200 до 255 прозрачным, и вы указываете гамма-значение по умолчанию 1,8. Если задать ключ цвета для категории пера, вызвав ImageAttributes::SetColorKey, то ключ цвета по умолчанию и гамма-значение по умолчанию не будут применяться к ручкам. Если позже вы очистите ключ цвета пера, вызвав ImageAttributes::ClearColorKey, категория пера не будет отменить изменения в цветовой ключ по умолчанию, а категория пера не будет иметь цветового ключа. Аналогичным образом категория пера не будет отменить изменения к гамма-значению по умолчанию; вместо этого категория пера не будет иметь гамма-значение.

Примеры

В следующем примере создается объект Image из EMF-файла. Код также создает объект ImageAttributes . Первый вызов ImageAttributes::SetColorKey задает ключ цвета по умолчанию для объекта ImageAttributes , чтобы цвета с красным компонентом от 80 до 120 были прозрачными. Второй вызов ImageAttributes::SetColorKey задает ключ цвета пера объекта ImageAttributes , чтобы все цвета с красным компонентом от 135 до 175 были прозрачными.

Код вызывает DrawImage один раз, чтобы нарисовать изображение без корректировки цвета. Затем код вызывает DrawImage еще три раза, каждый раз передавая адрес объекта Image и адрес объекта ImageAttributes . Во второй раз при нарисовке изображения (после вызова, задающего ключ цвета по умолчанию) все красные цвета от 80 до 120 будут прозрачными. При третьем рисовании изображения (после вызова, задающего цвет пера) все красное изображение от 135 до 175, нарисованное пером, становится прозрачным. Кроме того, весь красный цвет от 80 до 120, который не рисуется с помощью пера, является прозрачным. В четвертый раз при нарисовке изображения (после вызова ImageAttributes::ClearColorKey) ни одно красное изображение, нарисованное пером, не является прозрачным. Кроме того, весь красный цвет от 80 до 120, который не рисуется с помощью пера, является прозрачным.


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); 
}
				

Приведенный выше код вместе с конкретным файлом, TestMetafile5.png, выводятся следующие выходные данные. Отрезки в левом столбце были нарисованы пером, а отрезки в правом столбце заполнялись кистью. Клавиша цвета по умолчанию применяется к полосам, заполненным кистью. Клавиша цвета, применяемая к полосам, нарисованным пером, зависит от вызовов ImageAttributes::SetColorKey и ImageAttributes::ClearColorKey .

Иллюстрация, показывающая полосы в четырех строках по два столбца в каждом; последние два имеют неравное число столбцов в каждой строке

Требования

   
Минимальная версия клиента Windows XP, Windows 2000 Профессиональная [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header gdiplusimageattributes.h (включая Gdiplus.h)
Библиотека Gdiplus.lib
DLL Gdiplus.dll

См. также раздел

Bitmap

Цвет

Coloradjusttype

Изображение

ImageAttributes

ImageAttributes::ClearThreshold

ImageAttributes::SetColorKey

ImageAttributes::SetThreshold

Метафайл

Перекрашивание