參照this programming game我目前正在建設中。WPF:旋轉後獲取新的座標
alt text http://img12.imageshack.us/img12/2089/shapetransformationf.jpg
要翻譯WPF中一帆布,我使用兩種形式:TranslateTransform
(移動它),並RotateTransform
(旋轉它)[孩子一樣TransformationGroup
]
當它未旋轉(或以90度旋轉,因爲它將是相同的)時,我可以很容易地獲得畫布左上角的x,y座標,但是我面臨的問題是獲取左上角(和其他3點)座標。
這是因爲當一個RotateTransform
被施加,所述TranslateTransform
的X
和Y
特性不改變(且因此仍表明,左上方的是像虛線方(從圖像)
畫布正在從它的中心旋轉,所以這是它的起源。
所以我怎麼能得到「新」 x和4點的y座標旋轉後?
[更新]
alt text http://img25.imageshack.us/img25/8676/shaperotationaltransfor.jpg
我已經找到了一種方法找到左上角旋轉後座標(你可以從全新的形象見)由旋轉加入OFFSETX和OFFSETY到起始的X和Y座標。
但我現在無法搞清楚其餘的座標(其他3)。
有了這個旋轉的形狀,我怎樣才能找出其餘3個角的x和y座標?
[編輯]
的所述第二圖像中點是不準確的EXACT POINTS。我在腦海中估計了點數。
[更新]解決方案:
首先,我要感謝Jason S爲他描述了整個過程背後的數學是漫長和非常豐富職務;通過閱讀您的文章並嘗試瞭解這些價值,我確實學到了很多東西。
但現在我已經找到了一個代碼片段(感謝EugeneZ的提TransformBounds
)是不正是我想要的:
public Rect GetBounds(FrameworkElement of, FrameworkElement from)
{
// Might throw an exception if of and from are not in the same visual tree
GeneralTransform transform = of.TransformToVisual(from);
return transform.TransformBounds(new Rect(0, 0, of.ActualWidth, of.ActualHeight));
}
參考:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/86350f19-6457-470e-bde9-66e8970f7059/
在這裏你可以找到最簡單的方式找到 http://stackoverflow.com/a/22511805/2106820 – 2014-03-19 16:14:06