工具简介
为了充分利用多屏,并且实现不绘制横断即可查看修改等功能,开发了civil3d道路模型修改工具。
问题描述及原因分析
其中,为实现使用滚轮缩放纵断,对纵断chart添加了MouseWheel事件。
在实现的过程中遇到个问题:轻轻滚动滚轮,MouseWheel事件调用一次,符合预期;滚轮滚动幅度大的情况下,只要超出了第一种情况的幅度,无论幅度多大,MouseWheel事件仅调用两次。
分析之后,原因是:由于MouseWheel事件中要从文档重新获取数据并重绘纵断,耗时较长,导致了重绘过程捕捉不到鼠标滚动事件,因此滚动幅度大的情况下,只能捕捉到始末两次。
解决办法
因为civil3d仍然是单线程(我对多线程也不熟),将耗时较小的用户缩放操作仍然放在MouseWheel事件,而将耗时较大的重绘操作放到MouseHover事件,取得了较为理想的效果