最近在做一个地图控件,以前做的要绘制一些用户信息点上去,还有行驶轨迹什么的都在同一个图层上面,效率非常低,效果不好。
后来想到用支持透明控件的组件来做,不同的元素放在不同层绘制,这样地图移动,或者用户移动的时候之需要刷新部分图层,应该可以大大提高效率。
在重写地图控件的时候,使用的是AlphaControls,一开始只是简单的将原来显示地图的pictureBox替换为AlphaPicturebox了,结果地图总是显示不出来,才发现AlphaPicturebox需要放在AlphaForm 或者AlphaPanel中才能正常显示。我还总以为是我的地图绘制过程或图片读取过程有问题,眼泪汪汪的~~~
将AlphaPanel作为底层,用AlphaPicturebox填充,地图可以正常显示了,但是地图拖动的事件没有响应,即AlphaPictureBox的MouseDown MouseUp MouseMove事件都没有响应。放了个普通的picturebox上去,都可以响应,查了下,才发现是因为AlphaPicturebox的填充模式为fill所以无响应,原来的鼠标响应事件都应放到AlphaPanel的鼠标响应事件中处理。
一个很简单的问题,却折腾了我一天。