Поделиться через


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

Метод ImageAttributes::SetOutputChannel задает выходной канал CMYK для указанной категории.

Синтаксис

Status SetOutputChannel(
  [in]           ColorChannelFlags channelFlags,
  [in, optional] ColorAdjustType   type
);

Параметры

[in] channelFlags

Тип: ColorChannelFlags

Элемент перечисления ColorChannelFlags , указывающий выходной канал.

[in, optional] type

Тип: ColorAdjustType

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

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

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

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

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

Комментарии

Метод ImageAttributes::SetOutputChannel можно использовать для преобразования изображения в цветовое пространство CMYK с голубой пурпурной заливкой и анализа интенсивности одного из каналов цвета CMYK. Например, предположим, что вы создаете объект ImageAttributes и задаете для его выходного канала точечные изображения значение ColorChannelFlagsC. Если передать адрес этого объекта ImageAttributes методу DrawImage , вычисляется голубой компонент каждого пикселя, а каждый пиксель на отрисованном изображении будет оттенком серого, который указывает на интенсивность его голубого канала. Аналогичным образом можно визуализировать изображения, указывающие интенсивность пурпурных, желтых и черных каналов.

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

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

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

Примеры

В следующем примере создается объект Image и вызывается метод DrawImage для рисования изображения. Затем код создает объект ImageAttributes и задает для его выходного канала растрового изображения голубой (ColorChannelFlagsC). Код вызывает DrawImage во второй раз, передавая адрес объекта Image и адрес объекта ImageAttributes . Вычисляется голубой канал каждого пикселя, а отрисованное изображение показывает интенсивность голубого канала в виде оттенков серого. Код вызывает DrawImage еще три раза, чтобы показать интенсивность пурпурных, желтых и черных каналов.


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

   Image image(L"Mosaic2.bmp");

   // Draw the image unaltered.
   graphics.DrawImage(&image, 10, 10, width, height);

   UINT width = image.GetWidth();
   UINT height = image.GetHeight();

   ImageAttributes imAtt;

   // Draw the image, showing the intensity of the cyan channel.
   imAtt.SetOutputChannel(ColorChannelFlagsC, ColorAdjustTypeBitmap);
   graphics.DrawImage(
      &image,
      Rect(110, 10, width, height),  // dest rect
      0, 0, width, height,           // source rect
      UnitPixel,
      &imAtt);

   // Draw the image, showing the intensity of the magenta channel.
   imAtt.SetOutputChannel(ColorChannelFlagsM, ColorAdjustTypeBitmap);
   graphics.DrawImage(
      &image,
      Rect(210, 10, width, height),  // dest rect
      0, 0, width, height,           // source rect
      UnitPixel,
      &imAtt);

   // Draw the image, showing the intensity of the yellow channel.
   imAtt.SetOutputChannel(ColorChannelFlagsY, ColorAdjustTypeBitmap);
   graphics.DrawImage(
      &image,
      Rect(10, 110, width, height),  // dest rect
      0, 0, width, height,           // source rect
      UnitPixel,
      &imAtt);

   // Draw the image, showing the intensity of the black channel.
   imAtt.SetOutputChannel(ColorChannelFlagsK, ColorAdjustTypeBitmap);
   graphics.DrawImage(
      &image,
      Rect(110, 110, width, height),  // dest rect
      0, 0, width, height,            // source rect
      UnitPixel,
      &imAtt); 
}
				

На следующем рисунке показаны выходные данные предыдущего кода.

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

Требования

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

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

Coloradjusttype

ColorChannelFlags

ImageAttributes

ImageAttributes::ClearOutputChannel

ImageAttributes::ClearOutputChannelColorProfile

ImageAttributes::SetOutputChannelColorProfile