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 時,這個方法中套用的轉換是單純的剪除。 套用至原點的矩形,當因數為0時 shearY ,轉換會依矩形的高度水平 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 使用,而且需要 PaintEventArgse事件Paint物件。 程式代碼會執行下列動作:

  • 在套用縮放轉換之前,使用綠色畫筆將矩形繪製到畫面。

  • Matrix建立 ,並使用它來設定 的世界座標轉換Graphics

  • 使用紅色畫筆繪製另一個矩形。

  • 使用藍色畫筆繪製橢圓形。

結果是綠色矩形、紅色平行投影和已轉換的藍色橢圓形。 請注意,在設定轉換之前繪製的綠色矩形 (直接使用呼叫中 DrawRectangle 提供的座標) 。 其他兩個圖表會在繪圖之前轉換。 矩形會轉換成平行投影 (紅色) ,而橢圓形 (藍色) 會轉換成轉換的平行投影。 請注意,矩形底部會以兩倍的矩形高度來移動 (交叉) ,因而形成平行投影。

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,則轉換是單一 (因此無法反轉的) ,將整個平面分割成單一線條。

適用於