3
在一個簡單的只代碼WPF應用程序我寫,我想有一個自定義Canvas
。WPF畫布:中心原點,縮放軸(和y倒置),響應鼠標事件
我在StackOverflow中發現了與此類似的問題,但找不到這一個,也沒有一個簡單的方法來調整另一個答案,以適應我的具體問題(請注意,我沒有太多的WPF經驗) 。
在我的畫布,我想它具有以下性質:
- 點(0,0)是在
Canvas
的中心; - x軸指向右側;
- y軸指向頂端;
- 點(1,0)在原點右側約1英寸;和
- 在每個事件中,鼠標的位置在上面定義的座標系中給出。
在this answer,雷伯恩斯提出了一個非常簡單的解決方案,我的第3點。修改該代碼以使其處理我的點號4也是微不足道的(將1
和-1
更改爲RenderTransform
爲其他常量)。
但是,對於許多問題來說,這種非常簡單和優秀的解決方案是基於將寬度和高度設置爲0,並將畫布居中在其容器上。因此,沒有畫布捕捉點擊事件,所以這個解決方案不會處理我的第五個屬性。
實現此目的的最簡單方法是什麼?手工從Panel
繼承並做所有事情?繼承Canvas
,攔截每個事件並修改座標?