Matrix.Shear Метод

Определение

Применяет указанный вектор сдвига к объекту Matrix, добавляя вектор сдвига в начало.

Перегрузки

Shear(Single, Single, MatrixOrder)

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

Shear(Single, Single)

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

Shear(Single, Single, MatrixOrder)

Исходный код:
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, добавляя преобразование сдвига в начало.

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, и для него требуется PaintEventArgsePaint объект события . Код выполняет следующее действие:

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

  • 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, преобразование является сингулярным (следовательно, неизвертимым), сжимая всю плоскость в одну линию.

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