2011-04-24 47 views
0

我需要能夠將我自己的對象之一以及.Net中的一些GraphicsPath對象一起轉換。我需要對GraphicsPath對象執行的任何縮放,平移,旋轉操作,這些操作也會發生在我自己的對象上。對新對象實施矩陣變換

例如,這裏是一些縮放代碼:

using (Matrix ScaleTransform = new Matrix(1, 0, 0, 1, 0, 0)) // scale matrix 
{ 
    ScaleTransform.Scale(ScaleX, ScaleY); 
    moPath.Transform(ScaleTransform); 
    moBoundingBox.Transform(ScaleTransform); 

    MyObject.Transform(ScaleTranform); 
} 


//In "MyObject": 
public void Transform(Matrix m) 
{ 
    //How is this implemented? Is there a built-in .Net method? 
} 

的問題是:什麼 是落實在爲MyObject「轉換」方法的最佳途徑。我做了很多搜索,但找不到任何參考,以便找到最佳方式。

謝謝!

+0

哪些圖形API? GDI +? – 2011-04-24 20:16:21

+0

是的,GDI +(在.Net內)。 System.Drawing and System.Drawing.Drawing2D – Flipster 2011-04-25 00:57:20

回答

1

實施改變自己是不是很辛苦,一起來看看:

http://en.wikipedia.org/wiki/Transformation_matrix

那麼,你的目標位圖什麼?那麼這可能是一些題外話:

http://en.csharp-online.net/GDIplus_Graphics_Transformation%E2%80%94Image_Transformation

或者你可以留下你的對象和轉型推到堆棧,並使用它時,你使它成爲圖形。

嘿 - 它看起來像Matrix類可以爲你做了很多:

http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.matrix.aspx

例如

​​
+0

Hi Rune, 我很欣賞這種迴應。你給的最後一個例子就是我實際實現的例子。我只是將我所有的座標都變成了「點」,並將點數組傳遞給了內置的矩陣變換。 所以,好主意! +1並被接受。 – Flipster 2011-07-01 21:26:09