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

按指定的顺序,将指定的切变向量应用到此 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 时,此方法中应用的转换才为纯剪切。 应用于原点处的矩形,当因子为 0 时 shearY ,转换会按 shearX 矩形高度的倍数水平移动底部边缘。 shearX当因子为 0 时,它会按shearY矩形宽度的倍数垂直移动右边缘。 当两个参数都为非零时,请注意,因为结果很难预测。 例如,如果两个因子均为 1,则转换是单数 (因此不可逆) ,将整个平面挤成一条线。

适用于

Shear(Single, Single)

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 窗体 一起使用,它需要 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 时,此方法中应用的转换才为纯剪切。 应用于原点处的矩形,当因子为 0 时 shearY ,转换会按 shearX 矩形高度的倍数水平移动底部边缘。 shearX当因子为 0 时,它会按shearY矩形宽度的倍数垂直移动右边缘。 当两个参数都为非零时,请注意,因为结果很难预测。 例如,如果两个因子均为 1,则转换是单数 (因此不可逆) ,将整个平面挤成一条线。

适用于