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


Метод PathGradientBrush::ScaleTransform (gdipluspath.h)

Метод PathGradientBrush::ScaleTransform обновляет текущую матрицу преобразования этой кисти с помощью собственного произведения и матрицы масштабирования.

Синтаксис

Status ScaleTransform(
  [in] REAL        sx,
  [in] REAL        sy,
  [in] MatrixOrder order
);

Параметры

[in] sx

Тип: REAL

Реальное число, указывающее коэффициент горизонтального масштабирования.

[in] sy

Тип: REAL

Реальное число, указывающее коэффициент вертикального масштабирования.

[in] order

Тип: MatrixOrder

Необязательный элемент. Элемент перечисления MatrixOrder , указывающий порядок умножения. MatrixOrderPrepend указывает, что матрица масштабирования находится слева, а MatrixOrderAppend указывает, что матрица масштабирования находится справа. Значение по умолчанию — MatrixOrderPrepend.

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

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

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

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

Комментарии

В одной матрице 3 ×3 может храниться любая последовательность аффинных преобразований. При наличии нескольких трех матриц ×3, каждая из которых представляет аффинное преобразование, произведением этих матриц будет одна матрица из 3 ×3, представляющая всю последовательность преобразований. Преобразование, представленное этим продуктом, называется составным преобразованием. Например, предположим, что матрица T представляет преобразование, а матрица S — масштабирование. Если матрица M является TS продукта, то матрица M представляет составное преобразование: сначала перевести, а затем масштабировать.

Примеры

В следующем примере создается объект PathGradientBrush на основе треугольного пути. Вызовы методов PathGradientBrush::TranslateTransform и PathGradientBrush::ScaleTransform объекта PathGradientBrush задают элементы матрицы преобразования кисти таким образом, чтобы она представляла составное преобразование: сначала преобразование, а затем масштабирование. Код использует кисть градиента пути дважды для рисования прямоугольника: один раз перед настройкой преобразования и один раз после задания преобразования.

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

   // Create a path gradient brush based on an array of points.
   Point pts[] = {Point(0, 0), Point(50, 0), Point(50, 50)};
   PathGradientBrush pthGrBrush(pts, 3);

   // Fill an area with the path gradient brush (no transformation).
   graphics.FillRectangle(&pthGrBrush, 0, 0, 500, 500);

   pthGrBrush.TranslateTransform(50.0f, 40.0f);               // translate
   pthGrBrush.ScaleTransform(3.0f, 2.0f, MatrixOrderAppend);  // then scale

   // Fill the same area with the transformed path gradient brush.
   graphics.FillRectangle(&pthGrBrush, 0, 0, 500, 500); 
}

Требования

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

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

Кисти и закрашенные фигуры

Создание градиента пути

Заполнение фигуры цветным градиентом

Матрица

Матричное представление преобразований

MatrixOrder

PathGradientBrush

PathGradientBrush::GetTransform

PathGradientBrush::MultiplyTransform

PathGradientBrush::ResetTransform

PathGradientBrush::RotateTransform

PathGradientBrush::SetTransform

PathGradientBrush::TranslateTransform

Преобразования