winform 控件移动的闪烁问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform 控件移动的闪烁问题相关的知识,希望对你有一定的参考价值。

我是做个类似棋子移动的功能。
要移动的控件是个panel,移动范围是另一个在panel内。
结果,我写好后,上下移动挺好的,左右移动就出现闪烁,很严重的闪烁。

双缓冲我也设置了,还是没效果。
最后我发现了:我的要移动的panel背景色设为透明就会这样,如果不是透明就一切ok。。。
但是我真的需要透明哦
求解决哦
panel 本身已经载入图片。我利用重写的控件,ExPictureBox:PictureBox载入图片,然后背景色设为透明。在拖动这个控件的时候,就会出现闪烁、背景色设为非透明就毫无问题。我是要做卡牌游戏。那个控件是代表一张牌,我可以在面板上随意挪动。其他控件,包括panel,flowlayoutpanel都是这样,背景色为透明重回时候就闪烁了。我现在是把背景色暂时设为非透明了。不知道有没有更好的解决方案、

用winfrom实现动画效果确实很容易就出现闪烁效果,建议用wpf做,效果非常好,思路基本也是相同的。 参考技术A 你可以用gdi+来画 移动空间闪烁是避免不了的 参考技术B 放在代码,看下,是估计你代码设计思路出了点问题!
建议你把图像先画在位图上,在画到Panel上追问

追问一下。

看补充问题。

追答

你帮代码产放在我看下(发到我邮箱也可以),你可以重绘你动过的区域,而不是整个面板进行重绘,这样可以减少因为重绘而引起的闪烁!

Winform刷新时界面假死闪烁

1.界面假死

开启新的线程做一些计算操作,只有更新控件时才委托给Form线程更新界面。

2.Winform刷新时闪烁
一般的
this.SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true);
设置双缓冲、延时刷新

OCC时,机器人动作频繁刷新画面时,把form.Paint声明为public直接调用。
注:调用Refresh、Invalidate、Update都是在调用Paint事件前先清空在绘制,所以会有闪烁。
OCC更新TopoDS对象等不需要放在Form的线程中执行,因为更新的是AIS_InteractiveObject,并不是画面。

以上是关于winform 控件移动的闪烁问题的主要内容,如果未能解决你的问题,请参考以下文章

在winform画了一个自定义控件,现在我要在运行后进行拉伸动态改变大小,但快速拉伸就闪烁,怎么消除

winform中panel刷新闪烁的问题

winform 界面加载闪烁问题

在winform上添加用户控件过多时出现闪烁

winform绘制闪烁 前台有个线程隔一秒给控件赋值,控件就开始闪烁,如何处理

winform控件闪烁问题终极办法