在WPF中 使用StreamGeometry提高性能。

     现在正在使用WPF开发一个股票K线图图表,性能考虑是最大的一方面。 每根柱子宽5像素,柱子和柱子之间的间隔3像素。

     一个1920*1080分辨率的屏幕,势必要绘制超过200个柱子。如果选择的绘制方案不先进,对图表的绘制是有很大的性能影响的。

     任何图形都由直线和曲线构成的。在WPF中,最底层的图形的绘制级别是Geometry。

     在WPF中,使用DrawingContext的方法绘制一个直线,就内部创建了一个LineGeometry对象,绘制一个矩形,就内部创建了一个RectagleGeometry对象。

     所以使用传统的DrawLine,DrawRectangle来绘制这些柱子是不科学的。因为 每一根柱子,包含一个矩形和一根直线。

    假设绘制200个柱子,每次要实例化200个LineGeometry对象以及200个RectangleGeometry对象。

     在拖动的时候,不停的实例化和回收Geometry对象,画面的延迟是非常明显的。

     那么有没有一种绘制方案 可以减少对象的产生呢。StreamGeometry!StreamGeometry的效率非常之高,因为他是直接 保存字节流绘制数据的。

     StreamGeometry的工作方式就类似于一台激光打印机,它可以随意切换下一次绘制的开始坐标。

    仔细分析一下K线图,会发现,K线图是由两种颜色的柱子组成的。由于DrawingContext一次只能提交一种颜色的填充以及绘制边缘的命令。所以至少要绘制两次。

    使用两个StreamGeometry对象,首先绘制红色,在绘制绿色,就可以绘制所有的柱子。

   

转载于:https://www.cnblogs.com/Washine/p/5635037.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值