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


Метод TextureBrush::ScaleTransform (gdiplusbrush.h)

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

Синтаксис

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

Параметры

[in] sx

Тип: REAL

Реальное число, указывающее величину для масштабирования в направлении x.

[in] sy

Тип: REAL

Реальное число, указывающее масштабируемую величину в направлении y.

[in] order

Тип: MatrixOrder

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

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

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

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

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

Комментарии

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

Важен порядок умножения матриц. Как правило, rt матричного продукта отличается от TR матричного продукта. В примере, приведенном в предыдущем абзаце, составное преобразование, представленное RT (сначала повернуть, а затем перевести), отличается от составного преобразования, представленного TR (сначала перевести, а затем повернуть).

Примеры

В следующем примере создается кисть текстуры и задается преобразование кисти. Затем код использует преобразованную кисть для заполнения прямоугольника.

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

   Image image(L"HouseAndTree.Gif");
   TextureBrush textureBrush(&image);
   textureBrush.RotateTransform(30);                      // first rotate
   textureBrush.ScaleTransform(3, 1, MatrixOrderAppend);  // then scale
   graphics.FillRectangle(&textureBrush, 0, 0, 400, 200);
}

Требования

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

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

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

Заполнение фигур градиентной кистью

Изображение

Матрица

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

MatrixOrder

TextureBrush

TextureBrush::GetTransform

TextureBrush::MultiplyTransform

TextureBrush::RotateTransform

TextureBrush::SetTransform

TextureBrush::TranslateTransform

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