WinFormCanvasDemo
WinFormCanvasDemo copied to clipboard
当Zoom等于MaxZoom时在图的最右边放到最大后,图会偏出绘板。
//缩放比例
public float Zoom = 10;
//最小比例
private float MinZoom = 0.02f;
//最大比例
private float MaxZoom = 50;
放到最大的时候,浮点数与整数转换上存在一定的误差,导致目前放大太多会造成图像漂移问题
放到最大的时候,浮点数与整数转换上存在一定的误差,导致目前放大太多会造成图像漂移问题
大概得怎么解决呢,请指点一下
1、限制错放比例 2、把单精度float全部改成双精度double 3、所有原始尺寸增加十倍,减缓坐标系转换到屏幕像素时,小于1的问题
试了限制最大放大比例 //最大比例 private float MaxZoom = 20f; 现在在图形上放大到最大后不会突然消失了 非常感谢
这个图里有40万个元素,我需要找到其中的一个并定位。循环周期100ms. 当频繁使用mapCanvas.Invalidate();时CPU占用率一度达到40% ,想请教一下,能不能不调用或者少调用mapCanvas.Invalidate(); 让CPU的使用率降低。
还有个问题就是,怎么能让绘制出来的方块图形和canvas中心对齐?
40万个元素?有点出乎意料了。 你那个mapCanvas.Invalidate();干了什么事情? canvas没有中心,只是一个坐标系,如果是屏幕中心,那么应该用viewer的坐标去算
mapCanvas.Invalidate(); 为了重新绘制。没有其他目的。
你把重新放到循环外面呢
40万个元素用鼠标拖动平移的时候会有卡顿
你把重新放到循环外面呢
经过测试发现如果不同时频繁的绘制40万个元素 CPU占用率就会显著下降,所以我在想有没有什么办法做一个缩略图,只显示当前更新的元素的周围的元素
你把重新放到循环外面呢
经过测试发现如果不同时频繁的绘制40万个元素 CPU占用率就会显著下降,所以我在想有没有什么办法做一个缩略图,只显示当前更新的元素的周围的元素
如果只更新小图的话CPU占用率很低,但是大图也要更新,所以有没有办法局部更新大图。
你把重新放到循环外面呢
经过测试发现如果不同时频繁的绘制40万个元素 CPU占用率就会显著下降,所以我在想有没有什么办法做一个缩略图,只显示当前更新的元素的周围的元素
如果只更新小图的话CPU占用率很低,但是大图也要更新,所以有没有办法局部更新大图。
https://github.com/TimChen44/WinFormCanvasDemo/assets/44791363/ee42e419-f1e8-486a-b088-33eaea5f6154
这个图里有40万个元素,我需要找到其中的一个并定位。循环周期100ms. 当频繁使用mapCanvas.Invalidate();时CPU占用率一度达到40% ,想请教一下,能不能不调用或者少调用mapCanvas.Invalidate(); 让CPU的使用率降低。
这个解决了吗,有什么办法吗