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


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

Метод ImageAttributes::SetOutputChannelColorProfile задает файл цветового профиля выходного канала для указанной категории.

Синтаксис

Status SetOutputChannelColorProfile(
  [in]           const WCHAR     *colorProfileFilename,
  [in, optional] ColorAdjustType type
);

Параметры

[in] colorProfileFilename

Тип: const WCHAR*

Имя пути к файлу цветового профиля. Если файл цветового профиля находится в каталоге %SystemRoot%\System32\Spool\Drivers\Color, то этим параметром может быть имя файла. В противном случае этот параметр должен быть полным путем к файлу.

[in, optional] type

Тип: ColorAdjustType

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

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

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

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

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

Комментарии

Вы можете использовать методы ImageAttributes::SetOutputChannel и ImageAttributes::SetOutputChannelColorProfile , чтобы преобразовать изображение в цветовое пространство CMYK с голубой пурпурной желто-черной (CMYK) и проверить интенсивность одного из каналов цвета CMYK. Например, предположим, что вы пишете код, который выполняет следующие действия:

  1. Создайте объект Image .
  2. Создайте объект ImageAttributes .
  3. Передайте ColorChannelFlagsC в метод ImageAttributes::SetOutputChannel объекта ImageAttributes .
  4. Передайте имя пути к файлу цветового профиля методу ImageAttributes::SetOutputChannelColorProfile объекта ImageAttributes .
  5. Передайте адреса объектов Image и ImageAttributes методу DrawImage .
Windows GDI+ будет использовать файл цветового профиля для вычисления голубого компонента каждого пикселя на изображении, а каждый пиксель на отрисованном изображении будет иметь серый оттенок, указывающий интенсивность голубого канала.

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

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

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

Примеры

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


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

   Image image(L"Mosaic2.bmp");
   ImageAttributes imAtt;
   UINT width = image.GetWidth();
   UINT height = image.GetHeight();

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

   imAtt.SetOutputChannelColorProfile(
      L"TEKPH600.ICM", ColorAdjustTypeBitmap);

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

Приведенный выше код вместе с файлами Mosaic2.bmp и Tekph600.icm выдает следующие выходные данные.

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

Требования

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

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

Coloradjusttype

ColorChannelFlags

Атрибуты ImageAttributes

ImageAttributes::ClearOutputChannel

ImageAttributes::ClearOutputChannelColorProfile

ImageAttributes::SetOutputChannel