Matrix.Shear Метод

Определение

Применяет указанный вектор сдвига к объекту Matrix, добавляя вектор сдвига в начало.Applies the specified shear vector to this Matrix by prepending the shear vector.

Перегрузки

Shear(Single, Single)

Применяет указанный вектор сдвига к этому объекту Matrix, добавляя преобразование сдвига в начало.Applies the specified shear vector to this Matrix by prepending the shear transformation.

Shear(Single, Single, MatrixOrder)

Применяет указанный вектор сдвига к этому объекту Matrix в указанном порядке.Applies the specified shear vector to this Matrix in the specified order.

Shear(Single, Single)

Применяет указанный вектор сдвига к этому объекту Matrix, добавляя преобразование сдвига в начало.Applies the specified shear vector to this Matrix by prepending the shear transformation.

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

Коэффициент горизонтального сдвига.The horizontal shear factor.

shearY
Single

Коэффициент вертикального сдвига.The vertical shear factor.

Примеры

Следующий пример кода предназначен для использования с Windows Forms и требует PaintEventArgs e Paint объект события.The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, an Paint event object. Код выполняет следующее действие:The code performs the following action:

  • Рисует прямоугольник на экране с помощью зеленого пера перед применением преобразования масштабирования.Draws a rectangle to the screen, using a green pen, prior to applying a scaling transform.

  • Создает Matrix и использует его для задания преобразования в мировую координату для Graphics .Creates a Matrix and uses it to set a world-coordinate transform for the Graphics.

  • Рисует другой прямоугольник с помощью красного пера.Draws another rectangle using a red pen.

  • Рисование эллипса с помощью синего пера.Draws an ellipse using a blue pen.

Результатом является зеленый прямоугольник, красный параллелограмм и преобразованный синий эллипс.The result is a green rectangle, a red parallelogram and a transformed, blue ellipse. Обратите внимание, что зеленый прямоугольник (нарисованный перед заданием преобразования) непосредственно использует координаты, указанные в DrawRectangle вызове.Notice that the green rectangle (drawn prior to setting the transform) directly uses the coordinates supplied in the DrawRectangle call. Другие две фигуры преобразуются перед рисованием.The other two figures are transformed prior to drawing. Прямоугольник преобразуется в параллелограмм (красный), а эллипс (синий) преобразуется в размер, преобразованный в параллелограмм.The rectangle is transformed to a parallelogram (red), and the ellipse (blue) is transformed to fit into the transformed parallelogram. Обратите внимание, что нижняя часть прямоугольника перемещается (обрезается) на оси x вдвое больше высоты прямоугольника, тем самым формируя параллелограмм.Notice the bottom of the rectangle is moved (sheared) in the x-axis by a factor of two times the height of the rectangle, thus forming the parallelogram.

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.The transformation applied in this method is a pure shear only if one of the parameters is 0. Применяется к прямоугольнику в источнике, если shearY коэффициент равен 0, то при преобразовании нижний край перемещается по горизонтали в то же время, чем shearX Высота прямоугольника.Applied to a rectangle at the origin, when the shearY factor is 0, the transformation moves the bottom edge horizontally by shearX times the height of the rectangle. Если shearX коэффициент равен 0, то правый элемент перемещается по вертикали, в то shearY время как ширина прямоугольника.When the shearX factor is 0, it moves the right edge vertically by shearY times the width of the rectangle. Необходимо соблюдать осторожность, если оба параметра являются ненулевыми, так как результаты сложно прогнозировать.Caution is in order when both parameters are nonzero, because the results are hard to predict. Например, если оба фактора имеют значение 1, преобразование является единственным (следовательно нонинвертибле), а вся плоскость сжимается в одну строку.For example, if both factors are 1, the transformation is singular (hence noninvertible), squeezing the entire plane to a single line.

Shear(Single, Single, MatrixOrder)

Применяет указанный вектор сдвига к этому объекту Matrix в указанном порядке.Applies the specified shear vector to this Matrix in the specified order.

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

Коэффициент горизонтального сдвига.The horizontal shear factor.

shearY
Single

Коэффициент вертикального сдвига.The vertical shear factor.

order
MatrixOrder

Объект MatrixOrder, задающий порядок (в конце или в начале), в котором применяется сдвиг.A MatrixOrder that specifies the order (append or prepend) in which the shear is applied.

Примеры

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

Комментарии

Преобразование, применяемое в этом методе, является чисто сдвигом только в том случае, если один из параметров равен 0.The transformation applied in this method is a pure shear only if one of the parameters is 0. Применяется к прямоугольнику в источнике, если shearY коэффициент равен 0, то при преобразовании нижний край перемещается по горизонтали в то же время, чем shearX Высота прямоугольника.Applied to a rectangle at the origin, when the shearY factor is 0, the transformation moves the bottom edge horizontally by shearX times the height of the rectangle. Если shearX коэффициент равен 0, то правый элемент перемещается по вертикали, в то shearY время как ширина прямоугольника.When the shearX factor is 0, it moves the right edge vertically by shearY times the width of the rectangle. Необходимо соблюдать осторожность, если оба параметра являются ненулевыми, так как результаты сложно прогнозировать.Caution is in order when both parameters are nonzero, because the results are hard to predict. Например, если оба фактора имеют значение 1, преобразование является единственным (следовательно нонинвертибле), а вся плоскость сжимается в одну строку.For example, if both factors are 1, the transformation is singular (hence noninvertible), squeezing the entire plane to a single line.

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