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


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

Метод ImageAttributes::ClearColorMatrices очищает матрицу корректировки цвета и матрицу настройки оттенков серого для указанной категории.

Синтаксис

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

Параметры

[in, optional] type

Тип: ColorAdjustType

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

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

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

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

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

Комментарии

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

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

Как только вы указываете параметр настройки цвета или оттенков серого для определенной категории, параметры настройки по умолчанию больше не применяются к этой категории. Например, предположим, что вы указали пару (цвет и оттенки серого) матриц корректировки и гамма-значение для категории по умолчанию. Если задать пару матриц корректировки для категории пера путем вызова ImageAttributes::SetColorMatrices, то матрицы корректировки по умолчанию не будут применяться к ручкам. Если позже вы очистите матрицы корректировки пера, вызвав ImageAttributes::ClearColorMatrices, категория пера не будет отменить изменения к матрицам корректировки по умолчанию; скорее, категория пера не будет содержать матрицы корректировки. Аналогичным образом категория пера не будет отменить изменения гамма-значению по умолчанию; вместо этого категория пера не будет иметь гамма-значения.

Примеры

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

  • Цвет по умолчанию: умножает красный компонент на 1,5.
  • Оттенки серого по умолчанию: умножает зеленый компонент на 1,5.
  • Цвет пера: умножает синий компонент на 1,5.
  • Оттенки серого пера: умножает красный, зеленый и синий компоненты на 1,5.

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


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

   Image            image(L"TestMetafile6.emf");
   ImageAttributes  imAtt;
   RectF            rect;
   Unit             unit;

   image.GetBounds(&rect, &unit);

   ColorMatrix defaultColorMatrix = {  // Multiply red component by 1.5.
      1.5f,  0.0f,  0.0f,  0.0f,  0.0f,
      0.0f,  1.0f,  0.0f,  0.0f,  0.0f,
      0.0f,  0.0f,  1.0f,  0.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  1.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  0.0f,  1.0f};

   ColorMatrix defaultGrayMatrix = {  // Multiply green component by 1.5.
      1.0f,  0.0f,  0.0f,  0.0f,  0.0f,
      0.0f,  1.5f,  0.0f,  0.0f,  0.0f,
      0.0f,  0.0f,  1.0f,  0.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  1.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  0.0f,  1.0f};

   ColorMatrix penColorMatrix = {     // Multiply blue component by 1.5.
      1.0f,  0.0f,  0.0f,  0.0f,  0.0f,
      0.0f,  1.0f,  0.0f,  0.0f,  0.0f,
      0.0f,  0.0f,  1.5f,  0.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  1.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  0.0f,  1.0f};

   ColorMatrix penGrayMatrix = {      // Multiply all components by 1.5.
      1.5f,  0.0f,  0.0f,  0.0f,  0.0f,
      0.0f,  1.5f,  0.0f,  0.0f,  0.0f,
      0.0f,  0.0f,  1.5f,  0.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  1.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  0.0f,  1.0f};

   // Set the default color- and grayscale-adjustment matrices.
   imAtt.SetColorMatrices(
      &defaultColorMatrix,
      &defaultGrayMatrix, 
      ColorMatrixFlagsAltGray,
      ColorAdjustTypeDefault); 

   graphics.DrawImage(&image, 10.0f, 10.0f, rect.Width, rect.Height);

   graphics.DrawImage(
      &image, 
      RectF(10.0f, 50.0f, rect.Width, rect.Height),  // destination rectangle 
      rect.X, rect.Y,                // upper-left corner of source rectangle 
      rect.Width,                    // width of source rectangle
      rect.Height,                   // height of source rectangle
      UnitPixel,
      &imAtt);

   // Set the pen color- and grayscale-adjustment matrices.
   imAtt.SetColorMatrices(
      &penColorMatrix,
      &penGrayMatrix, 
      ColorMatrixFlagsAltGray,
      ColorAdjustTypePen); 

   graphics.DrawImage(
      &image, 
      RectF(10.0f, 90.0f, rect.Width, rect.Height),  // destination rectangle 
      rect.X, rect.Y,                // upper-left corner of source rectangle 
      rect.Width,                    // width of source rectangle
      rect.Height,                   // height of source rectangle
      UnitPixel,
      &imAtt);

   imAtt.ClearColorMatrices(ColorAdjustTypePen);

   graphics.DrawImage(
      &image, 
      RectF(10.0f, 130.0f, rect.Width, rect.Height),  // destination rectangle 
      rect.X, rect.Y,                // upper-left corner of source rectangle 
      rect.Width,                    // width of source rectangle
      rect.Height,                   // height of source rectangle
      UnitPixel,
      &imAtt); 
}
				

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

Иллюстрация, показывающая четыре строки с четырьмя многоточиями; те, которые рисуются с помощью пера, отличаются по цвету больше, чем заполненные

Требования

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

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

Bitmap

Цвет

Coloradjusttype

ColorMatrix

Изображение

Атрибуты ImageAttributes

ImageAttributes::ClearColorMatrix

ImageAttributes::SetColorMatrices

ImageAttributes::SetColorMatrix

ImageAttributes::SetToIdentity

Метафайл

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