我有一個System.Drawing.Drawing2D.Matrix,它具有旋轉和平移變換,我需要將它應用於Sprite。不幸的是,旋轉原點在精靈的左上角。更改矩陣變換的變換原點
如何將旋轉原點更改爲精靈的中心?
我有一個System.Drawing.Drawing2D.Matrix,它具有旋轉和平移變換,我需要將它應用於Sprite。不幸的是,旋轉原點在精靈的左上角。更改矩陣變換的變換原點
如何將旋轉原點更改爲精靈的中心?
不幸的是,沒有一個提出的解決方案都爲我工作。他們似乎是一個很好的解決方案,可能會在另一種情況下工作,但不在我的情況。
不過,我發現它有效的解決方案:
我已經改變值矩陣的OFFSETX和OFFSETY領域如下:
OffsetX = OffsetX - M11 * hx - M21 * hy + hx;
OffsetY = OffsetY - M12 * hx - M11 * hy + hy;
凡HX是半寬,HY是精靈的半高度和M11,M12和M21 - 對應的矩陣域。
此刻,您的轉換矩陣由旋轉(原點左上角),乘以平移(從原始左上角到新左上角)。
要改變旋轉的原點,你需要首先做另譯:
翻譯( - 半寬度,高度 - 半)居中對象
然後旋轉(現集中於中心精靈) 然後最後的翻譯(加上你在第一階段起飛的半高一半)。
還有一個RotateAt()
方法,您可以用它來指定所需的原點。 只需在參數中傳遞一個PointF
結構,您希望原點位於該參數中。
嗨灰色, 我也面臨同樣的問題。當我應用轉換時,所有圖紙都在左上角。 如果我正確設置了原點,那麼它會正常工作。 如何設置原點。 我有圖形對象左,上,下和右。請讓我知道如何做到這一點? – 2012-04-29 14:05:02