我需要在一个Canvas(由一个ScrollViewer绑定)上绘制图形。内存中有大约200个节点。
为了保持简单,我从UserControl派生了节点,并可以呈现自己。
但是我还没有创建节点之间的连线。根据MSDN所述:
表面上,Geometry类和Shape类非常相似。它们都用于渲染2D图形,并且它们有类似的具体类,这些类都派生自它们,例如EllipseGeometry和Ellipse。但是,这两组类之间存在重要的差异。例如,Geometry类缺少Shape类的一些功能,例如能够自行绘制的能力。
因为可能会有许多更多的节点,系统可能会缓慢地渲染事物。因此,为了提高性能,我认为最好的选择是使用Geometry(自定义渲染)。
我的问题:
我应该使用Shape还是Geometry来绘制线条?
为了加快显示速度,我应该仅渲染滚动视图区域中的当前视口(在这种情况下,我需要将节点从控件转换为几何对象),还是应该遍历所有节点并在它们之间绘制线条?
我应该在内存中将图形呈现在位图上,然后翻转它吗?这听起来更像游戏编程而不是一般应用程序编程!:D
WPF是否会自动处理视图中的内容和未渲染的内容以获得更好的性能?