0
The documentation for this gives a couple of examples但我無法找到任何可以通過變換中的每個設置執行的操作。Drawing2D.Matrix是否有很好的解釋?
我試圖想出一個轉換,將做一個垂直翻轉的繪製。
謝謝 - 戴夫
The documentation for this gives a couple of examples但我無法找到任何可以通過變換中的每個設置執行的操作。Drawing2D.Matrix是否有很好的解釋?
我試圖想出一個轉換,將做一個垂直翻轉的繪製。
謝謝 - 戴夫
變換存儲在一個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是一個更詳細的解釋。它最後包含一些代碼。