Matrix.Shear 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
通过预先计算切变向量将指定的切变向量应用到此 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对象。 代码执行以下操作:
结果为绿色矩形、红色平行四边形和经过转换的蓝色椭圆。 请注意,在设置转换之前 (绘制绿色矩形,) 直接使用调用中 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,则转换是单数 (因此不可逆) ,将整个平面挤成一条线。
适用于
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈