2012-04-12 17 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?我没有使用它,但它看起来像它的设计是为了做你想要的。