2016-07-30 63 views

回答

0

變換存儲在一個3x3矩陣,很難直觀地告訴了每個矩陣確實組件。這就是爲什麼你給了一組函數來處理,你可以鏈接在一起。例如,如果你想以90度順時針旋轉圖像,然後使它的兩倍,可以使用

Matrix myMatrix = new Matrix(); 
myMatrix.Rotate(90); 
myMatrix.Scale(2, 2, MatrixOrder.Append); 

MatrixOrder.Append表明比例必須與先前的轉換後進行(順序在這裏很重要)。

要使用的主要功能是:

  • RotateAt(Single a, Point o)點周圍
  • Scale(Single a, Single b)圖像進行順時針旋轉,在X縮放圖像和Y軸 - 基本上,(X,Y)成爲( ax,by)
  • Translate(Single a, Single b)在X軸和Y軸上轉換圖像 - 基本上,(x,y)變成(a + x,b + y)。

要垂直翻轉圖像,您只需要一個Scale(-1, 1)。每個點(x,y)將被轉換爲(-x,y)。如果需要將圖像翻轉到與y = 0軸不同的垂直軸上,則需要將其與Translate結合使用。

請注意,從數學上講,任何仿射變換都可以分解爲平移,旋轉和縮放矩陣的乘積。如果您不想進行計算,那麼您正在使用的API還提供了一些更方便的功能,例如Shear

Here是一個更詳細的解釋。它最後包含一些代碼。

相關問題