C# winform 界面切换闪烁问题

qq_21192475 2015-09-25 09:02:56
用了双缓冲减弱了闪烁效果,但有闪到界面一下的效果,很明显,求问如何解决呀。
...全文
634 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2015-09-30
  • 打赏
  • 举报
回复
无论采取什么技术手段,只要两个界面相差甚远,那么闪烁是正常的、必然的 因此你需要加入动画效果,来骗过人眼的视觉残留
a472544436 2015-09-30
  • 打赏
  • 举报
回复
你再仔细看双缓冲是双缓冲窗体,并不是缓冲控件,及时你现在在Win7上不闪烁,到XP上呢?MAC呢?
a472544436 2015-09-30
  • 打赏
  • 举报
回复
传统的做法是界面切换,我的方法并不是这么做,Winform框架上制作者的本意估计也不是这么做。 .NET可自定义控件,自定义控件也是窗体,你切换就Add Control,然后控制他的Visible属性就好了,对控件的切换绝对不会闪烁。
_lee_chong 2015-09-29
  • 打赏
  • 举报
回复
引用 7 楼 crystal_lz 的回复:
[quote=引用 2 楼 crystal_lz 的回复:] 你问题的范围太大了 就像 别人问你 为何我的电脑总是很卡 一样。。。 说都说不清楚是什么问题
如果你使用了 gid 没有使用双缓冲 可能会闪烁 如果你界面控件 一大堆 也可能会闪烁 界面控件上 到处设置透明背景色 还有 parent 也可能会闪烁 如果你界面执行功能的代码耗时太多 尤其是初始化 也可能闪烁 你就只说 你界面会闪烁 谁会知道 它到底是因为什么闪烁 实在是 不明白 为什么 一提到 闪烁 就老爱往 双缓冲 上扯关系[/quote] ~~~因为双缓冲是肯定可以解决“闪烁”(我用DirectUI),前提楼主真的是“闪烁”而不是卡。。
hqitian 2015-09-28
  • 打赏
  • 举报
回复
构造里加上这个 SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.UserPaint, true);
_lee_chong 2015-09-28
  • 打赏
  • 举报
回复
。。。。winform其实。。。就不适合做复杂漂亮界面(虽然我一直用他)。。。gdi性能太差。。。
crystal_lz 2015-09-28
  • 打赏
  • 举报
回复
引用 2 楼 crystal_lz 的回复:
你问题的范围太大了 就像 别人问你 为何我的电脑总是很卡 一样。。。 说都说不清楚是什么问题
如果你使用了 gid 没有使用双缓冲 可能会闪烁 如果你界面控件 一大堆 也可能会闪烁 界面控件上 到处设置透明背景色 还有 parent 也可能会闪烁 如果你界面执行功能的代码耗时太多 尤其是初始化 也可能闪烁 你就只说 你界面会闪烁 谁会知道 它到底是因为什么闪烁 实在是 不明白 为什么 一提到 闪烁 就老爱往 双缓冲 上扯关系
szfmrx 2015-09-27
  • 打赏
  • 举报
回复
在窗体放个定时器Timer2 (Interval设为10),执行代码如下,窗口闪烁会有明显改善 public FrmFinish() { InitializeComponent(); this.SetStyle(ControlStyles.UserPaint, true); this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景. this.SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲 this.Opacity = 0; timer2.Start(); } private void timer2_Tick(object sender, EventArgs e) { for (int i = 0; i < 5; i++) { this.Opacity += 0.2; if (i == 4) { timer2.Stop(); } } }
crystal_lz 2015-09-26
  • 打赏
  • 举报
回复
你问题的范围太大了 就像 别人问你 为何我的电脑总是很卡 一样。。。 说都说不清楚是什么问题
devmiao 2015-09-26
  • 打赏
  • 举报
回复
你的绘图代码本身需要优化,比如说不属于绘图的可放在别的线程
qq_21192475 2015-09-26
  • 打赏
  • 举报
回复
引用 1 楼 devmiao 的回复:
你的绘图代码本身需要优化,比如说不属于绘图的可放在别的线程
能具体举个例子吗?我的确是加入新图后出现这种情况,我是初学者,不太会。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧