[問題] 殘影 重繪

看板C_Sharp (C#)作者 (搗蛋三帥)時間10年前 (2015/05/05 23:25), 編輯推噓2(207)
留言9則, 4人參與, 最新討論串1/1
小弟最近遇到一個問題 想請問看看有沒有人也遇過 有方式解決的 大致上是有一個固定大小的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 因為圖片並無改變大小 希望有類似經驗的人能夠提供一些方法 或是一些方向來討論 感謝各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.19.8 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1430839528.A.69F.html

05/05 23:30, , 1F
最簡單的方法,換強一點的硬體
05/05 23:30, 1F

05/05 23:31, , 2F
釜底抽薪的辦法,預設繪圖不要用,全部自己畫...
05/05 23:31, 2F

05/05 23:31, , 3F
然後wpf這方面的優化作比較好..
05/05 23:31, 3F

05/05 23:41, , 4F
自己畫的意思是註冊panel的paint事件?在該事件內
05/05 23:41, 4F

05/05 23:42, , 5F
利用graphic.drawimage將檔案畫在panel上嗎?
05/05 23:42, 5F

05/05 23:43, , 6F
WPF我是很想用的 但是....目前無法這麼做...
05/05 23:43, 6F

05/06 00:11, , 7F
doevent?
05/06 00:11, 7F

05/06 17:43, , 8F
是啊,就跟做遊戲是一樣的...
05/06 17:43, 8F

05/07 23:59, , 9F
不要用control,全部自己畫XD
05/07 23:59, 9F
文章代碼(AID): #1LIE3eQV (C_Sharp)
文章代碼(AID): #1LIE3eQV (C_Sharp)