问题描述
用了双缓冲减弱了闪烁效果,但有闪到界面一下的效果,很明显,求问如何解决呀。
解决方案
解决方案二:
你的绘图代码本身需要优化,比如说不属于绘图的可放在别的线程
解决方案三:
你问题的范围太大了就像别人问你为何我的电脑总是很卡一样。。。说都说不清楚是什么问题
解决方案四:
引用1楼devmiao的回复:
你的绘图代码本身需要优化,比如说不属于绘图的可放在别的线程
能具体举个例子吗?我的确是加入新图后出现这种情况,我是初学者,不太会。
解决方案五:
在窗体放个定时器Timer2(Interval设为10),执行代码如下,窗口闪烁会有明显改善publicFrmFinish(){InitializeComponent();this.SetStyle(ControlStyles.UserPaint,true);this.SetStyle(ControlStyles.AllPaintingInWmPaint,true);//禁止擦除背景.this.SetStyle(ControlStyles.DoubleBuffer,true);//双缓冲this.Opacity=0;timer2.Start();}privatevoidtimer2_Tick(objectsender,EventArgse){for(inti=0;i<5;i++){this.Opacity+=0.2;if(i==4){timer2.Stop();}}}
解决方案六:
。。。。winform其实。。。就不适合做复杂漂亮界面(虽然我一直用他)。。。gdi性能太差。。。
解决方案七:
构造里加上这个SetStyle(ControlStyles.AllPaintingInWmPaint|ControlStyles.OptimizedDoubleBuffer|ControlStyles.ResizeRedraw|ControlStyles.UserPaint,true);
解决方案八:
引用2楼crystal_lz的回复:
你问题的范围太大了就像别人问你为何我的电脑总是很卡一样。。。说都说不清楚是什么问题
如果你使用了gid没有使用双缓冲可能会闪烁如果你界面控件一大堆也可能会闪烁界面控件上到处设置透明背景色还有parent也可能会闪烁如果你界面执行功能的代码耗时太多尤其是初始化也可能闪烁你就只说你界面会闪烁谁会知道它到底是因为什么闪烁实在是不明白为什么一提到闪烁就老爱往双缓冲上扯关系
解决方案九:
引用7楼crystal_lz的回复:
Quote: 引用2楼crystal_lz的回复:
你问题的范围太大了就像别人问你为何我的电脑总是很卡一样。。。说都说不清楚是什么问题如果你使用了gid没有使用双缓冲可能会闪烁如果你界面控件一大堆也可能会闪烁界面控件上到处设置透明背景色还有parent也可能会闪烁如果你界面执行功能的代码耗时太多尤其是初始化也可能闪烁你就只说你界面会闪烁谁会知道它到底是因为什么闪烁实在是不明白为什么一提到闪烁就老爱往双缓冲上扯关系
~~~因为双缓冲是肯定可以解决“闪烁”(我用DirectUI),前提楼主真的是“闪烁”而不是卡。。
解决方案十:
传统的做法是界面切换,我的方法并不是这么做,Winform框架上制作者的本意估计也不是这么做。.NET可自定义控件,自定义控件也是窗体,你切换就AddControl,然后控制他的Visible属性就好了,对控件的切换绝对不会闪烁。
解决方案十一:
你再仔细看双缓冲是双缓冲窗体,并不是缓冲控件,及时你现在在Win7上不闪烁,到XP上呢?MAC呢?
解决方案十二:
无论采取什么技术手段,只要两个界面相差甚远,那么闪烁是正常的、必然的因此你需要加入动画效果,来骗过人眼的视觉残留