Метод 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 |
См. также раздел
Заполнение фигуры цветным градиентом
Матричное представление преобразований
PathGradientBrush::GetTransform
PathGradientBrush::MultiplyTransform
PathGradientBrush::ResetTransform
PathGradientBrush::RotateTransform
PathGradientBrush::SetTransform