作者shooding (好人都来自於==>)
看板C_Sharp
标题Re: [问题] 透明底图的效能如何改善?
时间Thu Apr 9 18:58:53 2009
※ 引述《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
1F:推 wvsrugby:值得一推,典型的DoubleBuffer实作,写游戏时必用的技巧 04/10 00:22
2F:推 megaman1206:为什麽是咪啾不是啾咪? 04/10 19:17
3F:→ Cloud:因为.............爱..... 04/10 23:26