2010-02-10 44 views
3

在一個簡單的只代碼WPF應用程序我寫,我想有一個自定義CanvasWPF畫布:中心原點,縮放軸(和y倒置),響應鼠標事件

我在StackOverflow中發現了與此類似的問題,但找不到這一個,也沒有一個簡單的方法來調整另一個答案,以適應我的具體問題(請注意,我沒有太多的WPF經驗) 。

在我的畫布,我想它具有以下性質:

  1. 點(0,0)是在Canvas的中心;
  2. x軸指向右側;
  3. y軸指向頂端;
  4. 點(1,0)在原點右側約1英寸;和
  5. 在每個事件中,鼠標的位置在上面定義的座標系中給出。

this answer,雷伯恩斯提出了一個非常簡單的解決方案,我的第3點。修改該代碼以使其處理我的點號4也是微不足道的(將1-1更改爲RenderTransform爲其他常量)。

但是,對於許多問題來說,這種非常簡單和優秀的解決方案是基於將寬度和高度設置爲0,並將畫布居中在其容器上。因此,沒有畫布捕捉點擊事件,所以這個解決方案不會處理我的第五個屬性。

實現此目的的最簡單方法是什麼?手工從Panel繼承並做所有事情?繼承Canvas,攔截每個事件並修改座標?

回答

0

Canvas一個Border內。 Border有鼠標事件。另一種情況是將Border放置在Canvas的頂部。