Метод 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 |
См. также раздел
Заполнение фигур градиентной кистью
Матричное представление преобразований
TextureBrush::MultiplyTransform