小弟最近遇到一个问题
想请问看看有没有人也遇过 有方式解决的
大致上是有一个固定大小的Panel_A
在程式内利用循环产生许多相同的usercontrol(假设有50个))
放进Panel_A内 并用一个List<UserControl>来管理这些
每个UserControl内有一个panel 并且读取某张图片放入BackgroundImage
然后鼠标在Panel_A上做 MouseDown + MouseMove的行为
在Panel_A的MouseMove触发时判断鼠标左右位移的量
来改变每个usercontrol的location
现象就类似在拖拉这些Image
但数量一多(大约十几个就会)移动时就可感受到拖拉时有残影的感觉
或是拖拉后停止时 图片有瞬间被扫过的刷新感
我目前掌握到的资讯:
网络大多都是设置DoubleBuffer的方法
也有试过SuspendLayout 和ResumeLayout
但还是会有该现象 只是严重与否
也试过每次移动时呼叫refresh invalid update等方式
但refresh因为会立即重绘,使得拖拉操作感变慢 产生拖拉到定位才刷新的错觉
另外两个方式虽不造成变慢 但残影的感觉仍略微严重
故此想上来请问是否有更好的解决方式
我目前的想法是找寻
更改location时,不要重绘usercontrol内的panel或是该usercontrol
因为图片并无改变大小
希望有类似经验的人能够提供一些方法 或是一些方向来讨论
感谢各位