问题描述
一个很棘手的问题,查了很多,但是还没有查到一个有效的实现方法,希望各位朋友能够帮忙指导指导。项目中用的MapX,我现在有两个图层,两个图层在相同的坐标下,具有不同的图元。现在有一需求,需要设置另一图层上的图元以像素来偏移,即指定的偏移距离单位为像素,并且在试图被放大或缩小时,偏移后的图元和原来的图元还是相差几个像素的距离。我现在的实现方法就是循环图层上所有的图元,然后根据像素的距离,比如几个像素,来计算偏移后的座标,然后offset。为了保持偏移后的像素距离,于是在放大或缩小视图时,再触发重新偏移操作!总体上这样的实现,效率很低!在用户指定偏移操作的时候,还可以接受,因为这个操作不是很频繁,关键就是放大或缩小视图这个操作,比较频繁,如果每次都因为这重新偏移一次,效率明显感觉低了,现在想请教下各位,有没有什么好的实现方法,即保证:图元按像素偏移,并且在进行视图放大或缩小操作时能够保持高效,又或者还有什么更高效的偏移实现方法!考虑到各个图元的偏移方向得根据前后图元点的轨迹来确定,固不能通过偏移整个图层来实现!希望高手赐教,谢谢!
解决方案
解决方案二:
1.要加快速度把你频繁操作的图层设定SetAnimationLayer2.改动图元前设定staLr.BeginAccess(miAccessReadWrite);结束的时候设定staLr.EndAccess();//切忌可以提速3.把不必要的操作都移除你改动图元的函数特别是不能有多次大规模申请内存和释放内存的操作。4.尽量的简化图元本身的标示复杂度5.如果可以先计算能够显示在屏幕上的图元偏移其他不能显示的不要计算也不要便宜等他们在视图当中的时候再计算基本上就是上面这些方法了仅供参考。
时间: 2024-09-29 15:36:51