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


Matrix.Shear Метод

Определение

Применяет указанный вектор шерия к этому Matrix путем подготовки вектора шеи.

Перегрузки

Shear(Single, Single, MatrixOrder)

Применяет указанный вектор ревектора к этому Matrix в указанном порядке.

Shear(Single, Single)

Применяет указанный вектор стрижения к этой Matrix путем подготовки преобразования ревного ревного модуля.

Shear(Single, Single, MatrixOrder)

Исходный код:
Matrix.cs
Исходный код:
Matrix.cs
Исходный код:
Matrix.cs
Исходный код:
Matrix.cs
Исходный код:
Matrix.cs

Применяет указанный вектор ревектора к этому Matrix в указанном порядке.

public:
 void Shear(float shearX, float shearY, System::Drawing::Drawing2D::MatrixOrder order);
public void Shear (float shearX, float shearY, System.Drawing.Drawing2D.MatrixOrder order);
member this.Shear : single * single * System.Drawing.Drawing2D.MatrixOrder -> unit
Public Sub Shear (shearX As Single, shearY As Single, order As MatrixOrder)

Параметры

shearX
Single

Горизонтальный коэффициент перебора.

shearY
Single

Вертикальный коэффициент сдвига.

order
MatrixOrder

MatrixOrder, указывающий порядок (добавление или предустановка), в котором применяется реви.

Примеры

Пример см. в разделе Shear(Single, Single).

Комментарии

Преобразование, применяемое в этом методе, является чистой шерстью, только если один из параметров равен 0. Применяется к прямоугольнику в источнике, когда коэффициент shearY равен 0, преобразование перемещает нижний край по горизонтали на shearX раз высоту прямоугольника. Если коэффициент shearX равен 0, он перемещает правый край по вертикали shearY раз ширину прямоугольника. Осторожность заключается в том, что оба параметра являются ненулевой, так как результаты трудно прогнозировать. Например, если оба фактора имеют значение 1, преобразование является сингулярным (следовательно, неинвертируемым), сжимая всю плоскость до одной строки.

Применяется к

Shear(Single, Single)

Исходный код:
Matrix.cs
Исходный код:
Matrix.cs
Исходный код:
Matrix.cs
Исходный код:
Matrix.cs
Исходный код:
Matrix.cs

Применяет указанный вектор стрижения к этой Matrix путем подготовки преобразования ревного ревного модуля.

public:
 void Shear(float shearX, float shearY);
public void Shear (float shearX, float shearY);
member this.Shear : single * single -> unit
Public Sub Shear (shearX As Single, shearY As Single)

Параметры

shearX
Single

Горизонтальный коэффициент перебора.

shearY
Single

Вертикальный коэффициент сдвига.

Примеры

Следующий пример кода предназначен для использования с Windows Forms и требует PaintEventArgseобъекта события Paint. Код выполняет следующее действие:

  • Рисует прямоугольник на экран с помощью зеленого пера перед применением преобразования масштабирования.

  • Создает Matrix и использует его для задания преобразования координат мира для Graphics.

  • Рисует другой прямоугольник с помощью красного пера.

  • Рисует многоточие с помощью синего пера.

Результатом является зеленый прямоугольник, красная параллелограмма и преобразованная синяя многоточие. Обратите внимание, что зеленый прямоугольник (нарисованный до настройки преобразования) напрямую использует координаты, предоставленные в вызове DrawRectangle. Остальные две цифры преобразуются до рисования. Прямоугольник преобразуется в параллелограмму (красный), а многоточие (синий) преобразуется в преобразованную параллелограмму. Обратите внимание, что нижняя часть прямоугольника перемещается (срезается) в оси x с коэффициентом в два раза больше высоты прямоугольника, таким образом формируя параллелограмму.

public:
   void MatrixShearExample( PaintEventArgs^ e )
   {
      Matrix^ myMatrix = gcnew Matrix;
      myMatrix->Shear( 2, 0 );
      e->Graphics->DrawRectangle( gcnew Pen( Color::Green ), 0, 0, 100, 50 );
      e->Graphics->MultiplyTransform( myMatrix );
      e->Graphics->DrawRectangle( gcnew Pen( Color::Red ), 0, 0, 100, 50 );
      e->Graphics->DrawEllipse( gcnew Pen( Color::Blue ), 0, 0, 100, 50 );
   }
public void MatrixShearExample(PaintEventArgs e)
{
    Matrix myMatrix = new Matrix();
    myMatrix.Shear(2, 0);
    e.Graphics.DrawRectangle(new Pen(Color.Green), 0, 0, 100, 50);
    e.Graphics.MultiplyTransform(myMatrix);
    e.Graphics.DrawRectangle(new Pen(Color.Red), 0, 0, 100, 50);
    e.Graphics.DrawEllipse(new Pen(Color.Blue), 0, 0, 100, 50);
}
Public Sub MatrixShearExample(ByVal e As PaintEventArgs)
    Dim myMatrix As New Matrix
    myMatrix.Shear(2, 0)
    e.Graphics.DrawRectangle(New Pen(Color.Green), 0, 0, 100, 50)
    e.Graphics.MultiplyTransform(myMatrix)
    e.Graphics.DrawRectangle(New Pen(Color.Red), 0, 0, 100, 50)
    e.Graphics.DrawEllipse(New Pen(Color.Blue), 0, 0, 100, 50)
End Sub

Комментарии

Преобразование, применяемое в этом методе, является чистой шерстью, только если один из параметров равен 0. Применяется к прямоугольнику в источнике, когда коэффициент shearY равен 0, преобразование перемещает нижний край по горизонтали на shearX раз высоту прямоугольника. Если коэффициент shearX равен 0, он перемещает правый край по вертикали shearY раз ширину прямоугольника. Осторожность заключается в том, что оба параметра являются ненулевой, так как результаты трудно прогнозировать. Например, если оба фактора имеют значение 1, преобразование является сингулярным (следовательно, неинвертируемым), сжимая всю плоскость до одной строки.

Применяется к