Re: [問題] 透明底圖的效能如何改善?

看板C_Sharp作者 (好人都來自於==>)時間15年前 (2009/04/09 18:58), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串2/4 (看更多)
※ 引述《singz (Run Away~)》之銘言: : 我現在要做個windows form的ui程式 : 有個圖片要有來做底圖,上面許多的ui components : 由於要做透明的效果(空白的地方使用底圖圖片的顏色) : 所以這些label , button , radio button...etc都得設transparent : 可是components愈多的話,在執行的時候show出畫面時, : 很明顯效能會變很差,componets是一個接著一個顯示出來..感覺就是跑很慢 : SetStyle doublebuffer 可以解決閃爍的問題,可是對這個問題沒有幫助 : 請問有人知道要怎麼改善嗎? : 感謝 高效能的原理就是"千萬""千萬"不要呼叫任何refresh(), update()... 底層是你的UI的snapshot,也就是全部壓成一張圖(多線程分段載入效果好!). 上面疊一層Layer, 完全透明(設transparent key) 用來收使用者的事件e.g., click,keypress... 再去做對應的回饋效果e.g.,按下去有光暈效果. 回饋效果做法_func(){ runtime產生一張畫布,bitmap大小是你要做出效果的區域e.g.,按鈕A的範圍. 這邊說區域的意思是,可包含數個按鈕. 當收到click事件, 將光暈的圖, 用createGraphics()方法畫到bitmap裡面. 同樣的將所有要更新畫面的圖都畫到bitmap裡面. 然後將bitmap畫到底層, 最後記得要dispose那張bitmap, 才不會有memory leak喔~ 咪啾 } //希望對你有幫助 --- 引用某人的話: 你只要xxx的從左邊拉一個UI過來就是失敗! 我不認同,因為開發過程將UI對齊之後紀錄座標是很重要的. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.78.140

04/10 00:22, , 1F
值得一推,典型的DoubleBuffer實作,寫遊戲時必用的技巧
04/10 00:22, 1F

04/10 19:17, , 2F
為什麼是咪啾不是啾咪?
04/10 19:17, 2F

04/10 23:26, , 3F
因為.............愛.....
04/10 23:26, 3F
文章代碼(AID): #19tTJkYk (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #19tTJkYk (C_Sharp)