Метод LinearGradientBrush::ScaleTransform (gdiplusbrush.h)
Метод LinearGradientBrush::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, представляющая всю последовательность преобразований. Преобразование, представленное этим продуктом, называется составным преобразованием. Например, предположим, что матрица T представляет собой перевод, а матрица S — масштабирование. Если матрица M является продуктом TS, то матрица M представляет составное преобразование: сначала преобразование, а затем масштабирование.
Важен порядок умножения матрицы. Как правило, матричный продукт RT не совпадает с матричным продуктом TR. В примере, приведенном в предыдущем абзаце, составное преобразование, представленное RT (сначала повернуть, а затем перевести), не совпадает с составным преобразованием, представленным TR (сначала перевести, а затем повернуть).
Примеры
В следующем примере создается линейная кисть градиента и она используется для заполнения прямоугольника. Затем код изменяет матрицу преобразования кисти, применяя составное преобразование, а затем заполняет прямоугольник преобразованной кистью.
VOID Example_ScaleTrans(HDC hdc)
{
Graphics myGraphics(hdc);
LinearGradientBrush linGrBrush(
Rect(0, 0, 80, 40),
Color(255, 255, 0, 0), // red
Color(255, 0, 0, 255), // blue
LinearGradientModeHorizontal);
// Fill a large area with the linear gradient brush (no transformation).
myGraphics.FillRectangle(&linGrBrush, 0, 0, 800, 150);
// Apply a composite transformation: first translate, then scale.
linGrBrush.TranslateTransform(60, 0); // horizontal translation
linGrBrush.ScaleTransform(2, MatrixOrderAppend); // horizontal doubling
// Fill a large area with the transformed linear gradient brush.
myGraphics.FillRectangle(&linGrBrush, 0, 200, 800, 150);
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP, Windows 2000 Профессиональная [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | gdiplusbrush.h (включая Gdiplus.h) |
Библиотека | Gdiplus.lib |
DLL | Gdiplus.dll |
См. также раздел
Заполнение фигур градиентной кистью
LinearGradientBrush::MultiplyTransform
LinearGradientBrush::RotateTransform
LinearGradientBrush::TranslateTransform