日期:2014-05-20  浏览次数:21028 次

当窗体上的控件多并且为透明色时,界面刷新速度慢
1。在窗体的Backgroundimage上,设置一个背景图
2。在一个窗体上放了10个label,把Label变成透明色以显示背景图片的效果,
3。如果窗体大小调整,或被其他窗体挡住,再次显示时,
      那么速度非常慢(主要是指label的显示速度),如果不是透明的,速度非常快,
4。我知道他是Update他那块的背景造成的,有办法提速吗?


------解决方案--------------------
换个机子试试吧,这方面我还真没试过,不过10个label也不至于到刷新慢的程序吧,你再查查程序吧。
------解决方案--------------------
.Net牵扯到些底层GDI+的东西都不太好弄
------解决方案--------------------
帮顶了1
------解决方案--------------------
透明效果要1次or运算,是很慢
------解决方案--------------------
有一个办法楼主可以试试,就是不要把图加到Backgroundimage属性,而是打开双绶冲属性,重写基类的OnPaint及OnPaintBackground两个方法,在这两个方法中对你的 "背景图 "定制绘制,这样的话可能会提高效率,因为默认的对背景的绘制 "不太合理 ".
------解决方案--------------------
GDI+ 构图 本来就很慢
楼主可以考虑使用gdi 或者 api直接来替换你的操作。
------解决方案--------------------
用线程可能要快点
------解决方案--------------------
不但标签设置透明的时候有慢的感觉,对一个Form来说设置成透明的时候也会有 "不爽的 "感觉,比如在一个Form设置为透明后调用Show()来显示就会有一闪的感觉.
------解决方案--------------------
你应该把Label直接画到背景图片上去,这样会快很多……
------解决方案--------------------
不要这样设计,改用Graphics 直接绘制背景和Label的内容
------解决方案--------------------
可能我的回答没有价值

--------------------------


但是在WPF中100个控件的加载已不会出现闪烁 或者速度慢的问题了
------解决方案--------------------
控件多后,每个控件在界面刷新的时候都需要进行多次的重绘操作,这样就很容易引起闪烁,这个不是加载控件的问题,而是多次重绘的问题,用线程加载也是没有用的.图形涉及太多的话,最好采用Ivony()和GXY2005(晓晨美眉好^_^) 说的,直接绘制,不在采用label控件,把所有需要显示的图形元素在内存中构造完成后一次性的draw到界面,不过这个操作就相对麻烦很多.