2011-10-20 207 views
6

我有一個silverlight Canvas它擁有圖像(多邊形)的圖像。我需要開發一個控件來放大和平移該工作區域內的畫布(單元內的Border,截至目前爲止),如下所示。做這個的最好方式是什麼。有沒有我可以使用的圖書館?縮放和平移圖像畫布

我需要能夠將圖紙添加到縮放/平移畫布上。

http://i54.tinypic.com/1zbe7pf.png

+0

您希望縮放滑塊實際放大畫布本身而不是圖像,以便畫布填充整個工作區域? – Jack

+0

是的。因爲圖像上的標記應該到位。 – blitzkriegz

+0

畫布是否填滿整個工作區域取決於使用縮放滑塊設置多少變焦。 – blitzkriegz

回答

1

你可以嘗試創建一個用戶控件,基本上是一個帆布內的圖像,並公開兩個變換屬性來控制縮放和平移。 ScaleTransform可以處理縮放,而TranslateTransform可以處理平移。您可以從兩者創建CompositeTransform並將其指定爲畫布的RenderTransform。

您可以將縮放滑塊綁定到ScaleTransform,並處理鼠標事件以更改TranslateTransform。只要你獲得了相對於畫布本身的鼠標座標(即mouseEventArgs.GetPosition(canvas))。

2

大量的代碼示例在互聯網上可用。檢查出ZoomControlCodePlex

+2

+1,爲什麼要重新發明輪子。 –