背景
我们在绘制大量图元的时候,如果绘制区域瞬间有大量的图元要绘制,比如百万条,千万条图元, 那么如果不做优化的话, 会瞬间导致程序卡死,如何解决呢?先看我解决的结果
示意图展示
以上,我随机绘制了 200万 个随机线条, 然后拖动整个面板, 一点也不卡, 我之后绘制了一千万个线条, 也是不卡的
解决办法
1. 实际上,第一图元的存放,要按照金字塔的形式来存储, 放大的时候,展示金字塔底部的那些数据, 缩小的时候,展示金字塔顶部的那些数据. 这样,显示区域就不会同时渲染太多图元
2. 使用双缓存的位图概念, 但是要做好各个坐标系之间的转换以及鼠标相关事件的重写. 我就是耗在了位图区域和虚拟面板上,鼠标点击的点和位图点击的点之间位置的对应,以及DPI的这些计算上
基于以上思路,我去把对局部区域进行三角剖分的那个也做了上去,且看效果图