我正在WPF中制作路线规划程序,我需要显示一个地图,它是一个有数万条边的图形对象。如果我还想与这个地图交互(比如缩放,移动,选择边缘),那么绘制这些线条的最佳选择是什么?我试过的所有选项都变成了hova,但渲染性能却很慢。
答案 0 :(得分:3)
你可以使用Shape,与这些对象的交互特别简单,但是如果你处理成千上万的边缘我建议使用DrawingVisual类,一个可以用来的可视对象在屏幕上渲染矢量图形,以及它的RenderOpen方法。我有一个similar problem,我使用DrawingContext改善了我的应用程序的性能以绘制我的边缘。
要缩放,您必须使用转换,尤其是ScaleTrasnform并将转换应用于面板或形状。
DrawingVisual不提供事件handlig,因此如果使用Shape,您可以使用事件与边缘交互,使用DrawingVisual,您需要实现Hit-Testing。
答案 1 :(得分:1)
要提高绘图性能,您必须避免一次渲染所有线条。即使使用较低级别的视觉效果,也无法提高性能。
你必须遵循这些事情:
答案 2 :(得分:0)
如果必须使用WPF,请查看DrawingVisual类。这样可以访问低级绘图基元,从而提供更快的性能。但是,当您处理较低级别的对象时,您必须自己处理焦点和命中测试等事情。在这里查看DrawingVisuals上的msdn条目:
http://msdn.microsoft.com/en-us/library/system.windows.media.drawingvisual.aspx http://msdn.microsoft.com/en-us/library/ms742254.aspx