2012-04-12 22 views
1

我有這個問題。如何更快地繪製形狀元素並使其在wpf中縮放?

所以我有一堆必須在畫布上可視化的數據(比如超過5000個項目)。所以我把它們畫成一串水平線上的垂直矩形,有些像這樣:

--- | - ||||| --- | --- ||| --- || ---- ||||||| --------

現在,由於畫布很小,我只在不同的縮放級別繪製不同數量的矩形。所以,如果我放大更多,線條會變得更長,並且可以看到更多的矩形。

問題是我每次放大時,都必須清除整個畫布,並用新的縮放比例重新畫一切。它真的很爛,繪圖很慢,縮放也不是很好。

所以我想知道有沒有一種方法可以實現更快的繪圖,並且縮放比較好(就像那些矢量圖,可以無限放大)?

回答

1

您試過ScaleTransform Class嗎?

<Canvas.RenderTransform> 
    <ScaleTransform ScaleX="2" ScaleY="2" /> 
</Canvas.RenderTransform> 

另請參閱How to: Scale an Element。出於性能原因:

  • 凍結你的Freezables

  • 更新,而不是更換一個的RenderTransform

    您可以更新改造,而不是取代它的RenderTransform屬性的 值。涉及動畫的 情況尤其如此。通過更新現有的變換,您可以避免發起不必要的佈局計算。

1

有你看了ZoomableCanvas?我沒有使用它,但它看起來像它的設計是爲了做你想要的。