最近遇到由于窗口内其它控件变动导致自定义地图控件闪烁的问题,体验特别不好,所以需要想办法解决这个问题。
自定义地图控件的逻辑是在控件触发OnPaint事件时,将地图内容绘制到控件Graphic上,曾经尝试在OnPaint中做处理,但是没有效果,后来才意识到闪烁的根本原因是控件做了清除操作,变白了再做绘制就会让人感觉到是在闪烁。
在网上找到了这篇文章,winform控件大小改变是防止背景重绘导致的闪烁,在自定义地图控件中重写OnPaintBackground方法后验证此问题得到解决
|
|
接下来需要考虑不做清除操作会带来什么问题,比如在图层设置成半透明时,如果不做清屏效果会不会叠加,不做清屏会不会有些不是本次刷新需要显示的内容还残留在地图上等,但是经过验证这些问题都不存在,因为地图的绘制机制会做一个背景填充的操作,效果目前一切正常。