2012-12-11 63 views
0

我正在嘗試編寫一個WPF應用程序來在不使用任何GIS SDK的情況下在畫布上渲染shapefile。直至呈現其成功完成。在嘗試應用縮放變換時,我發現畫布上的所有形狀在放大時會變大。如果點要素(在畫布上顯示爲橢圓形狀)和TextBlocks,大小應該保持相同,只有位置應該相對變化。請指導我如何達到這一要求。在地理信息系統軟件中應用wpf應用中的變換

點要素我的代碼如下:

private Geometry CreateEllipseGeometry(double size, Point centerPoint) 
    { 
     EllipseGeometry geom = new EllipseGeometry(); 

     geom.RadiusX = size; 
     geom.RadiusY = size; 
     geom.Center = centerPoint; 

     geom.Transform = this.viewTransform; 

     return geom; 
    } 

這裏viewTransform是有兩個孩子的變換組,一個是scaletransform,另一個是translatetransform。

我在這個網站上發現了一篇文章(Prevent WPF TextBlock from expanding text due to LayoutTransform),它描述瞭如何防止文本塊擴展。解決方案表示將逆變換綁定到文本塊。 在這裏我的文本塊是動態創建的。所以請告訴我如何將逆變換動態綁定到文本塊。

回答

0

我已經在WPF中完成了確切的工作,而不使用任何API。在點要素的情況下,您可以將點的屬性設置爲TranslateTransform(可能包含在您的viewTransform中),因此當平移地圖時其他要素移動時所有點要素都會正確移動。但在縮放的情況下,我清除所有的點和文本塊,並重新計算給定viewTransform的座標。

+0

當畫布上有大量的點要素和文本塊時,這種方法肯定會達到性能。你在這方面做了些什麼? –

+0

是的,我已經完成了幾百到幾千個幾何圖形(點,線,多邊形)並且沒關係。 –

相關問題