Matrix.Shear 方法

定义

通过附加剪切向量将指定的剪切向量应用于此 Matrix

重载

Shear(Single, Single, MatrixOrder)

按指定顺序将此剪切向量应用于此 Matrix

Shear(Single, Single)

通过追加剪切转换,将指定的剪切向量应用于此 Matrix

Shear(Single, Single, MatrixOrder)

Source:
Matrix.cs
Source:
Matrix.cs
Source:
Matrix.cs
Source:
Matrix.cs
Source:
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。 当 shearX 因子为 0 时,它将右边缘垂直移动 shearY 矩形宽度的 shearY 倍。 当这两个参数都是非零时,警告是有条不紊的,因为结果很难预测。 例如,如果这两个因素均为 1,则转换是单一的(因此不可逆),将整个平面挤压为一条线。

适用于

Shear(Single, Single)

Source:
Matrix.cs
Source:
Matrix.cs
Source:
Matrix.cs
Source:
Matrix.cs
Source:
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 窗体一起使用,它需要 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。 当 shearX 因子为 0 时,它将右边缘垂直移动 shearY 矩形宽度的 shearY 倍。 当这两个参数都是非零时,警告是有条不紊的,因为结果很难预测。 例如,如果这两个因素均为 1,则转换是单一的(因此不可逆),将整个平面挤压为一条线。

适用于