Метод 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 |
См. также раздел
ImageAttributes::ClearColorMatrix
ImageAttributes::SetColorMatrices
ImageAttributes::SetColorMatrix