2011-03-07 27 views
3

我有一個System.Drawing.Drawing2D.Matrix,它具有旋轉和平移變換,我需要將它應用於Sprite。不幸的是,旋轉原點在精靈的左上角。更改矩陣變換的變換原點

如何將旋轉原點更改爲精靈的中心?

回答

0

不幸的是,沒有一個提出的解決方案都爲我工作。他們似乎是一個很好的解決方案,可能會在另一種情況下工作,但不在我的情況。

不過,我發現它有效的解決方案:
我已經改變值矩陣的OFFSETX和OFFSETY領域如下:

OffsetX = OffsetX - M11 * hx - M21 * hy + hx; 
OffsetY = OffsetY - M12 * hx - M11 * hy + hy; 

HX是半寬,HY是精靈的半高度和M11,M12和M21 - 對應的矩陣域。

+0

嗨灰色, 我也面臨同樣的問題。當我應用轉換時,所有圖紙都在左上角。 如果我正確設置了原點,那麼它會正常工作。 如何設置原點。 我有圖形對象左,上,下和右。請讓我知道如何做到這一點? – 2012-04-29 14:05:02

2

此刻,您的轉換矩陣由旋轉(原點左上角),乘以平移(從原始左上角到新左上角)。

要改變旋轉的原點,你需要首先做另譯:

翻譯( - 半寬度,高度 - 半)居中對象
然後旋轉(現集中於中心精靈) 然後最後的翻譯(加上你在第一階段起飛的半高一半)。