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


Метод LinearGradientBrush::RotateTransform (gdiplusbrush.h)

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

Синтаксис

Status RotateTransform(
  [in] REAL        angle,
  [in] MatrixOrder order
);

Параметры

[in] angle

Тип: REAL

Реальное число, указывающее угол поворота в градусах.

[in] order

Тип: MatrixOrder

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

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

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

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

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

Комментарии

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

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

Примеры

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

VOID Example_RotateTrans(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 scale, then rotate.
   linGrBrush.ScaleTransform(2, 1);                    // horizontal doubling
   linGrBrush.RotateTransform(20, MatrixOrderAppend);  // 20-degree rotation

   // Fill a large area with the transformed linear gradient brush.
   myGraphics.FillRectangle(&linGrBrush, 0, 200, 800, 150);  
}

Требования

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

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

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

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

LinearGradientBrush;

LinearGradientBrush::MultiplyTransform

LinearGradientBrush::ScaleTransform

LinearGradientBrush::TranslateTransform

Матрица

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

MatrixOrder

Rect

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