小弟最近遇到一個問題
想請問看看有沒有人也遇過 有方式解決的
大致上是有一個固定大小的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
因為圖片並無改變大小
希望有類似經驗的人能夠提供一些方法 或是一些方向來討論
感謝各位