C# form里的panel闪烁伤不起啊!~~~
我用C#做了个模拟键盘的项目,主要是使用透明控件,在panel里放置keybutton,原先为了能在切换页面的时候省事(button的visible),现在遇到个很严重的...
我用C#做了个模拟键盘的项目,主要是使用透明控件,在panel里放置keybutton,原先为了能在切换页面的时候省事(button的visible),现在遇到个很严重的问题,当form拉伸时,单独透明的按钮拉伸时不会闪烁,但是在panel里的控件闪烁厉害!!求大神,如何解决panel的闪烁问题!!!是否有属性可以修改?form的DoubleBuffer属性已经改了~~
展开
2个回答
展开全部
没用的,winform不适合做这种大量刷新的工作,你要了解下windows工作原理和wmpaint原理就知道怎么回事了
这种事情一般都是自己绘图,用gdi+,然后加doublebuffer就不会出现闪耀
这种事情一般都是自己绘图,用gdi+,然后加doublebuffer就不会出现闪耀
更多追问追答
追问
自己绘图???
我这个原本就有背景图,只是在keyboard的背景图的基础上加上PANEL,然后添加按钮控件。
你说的doublebuffer属性只有在form上有,我在panel里没看到。。
好不容易把所以控件跟随窗体变化而变化的问题解决了,又出现这么个闪烁问题,真郁闷!
是不是该把panel去掉?直接使用透明的控件。。只是多了些繁琐的button.visible。。。。
追答
控件没法透明,winform做不了这么高级的事情,要不你用wpf,比这个容易得多,要不你就自己画
展开全部
有同感,我做的透明控件拖拉时总是闪屏。winform似乎在这个方面有所欠缺
追问
嗯,拖动的时候会有比较明显的闪屏,但是透明的控件主要不会用来拖动吧。我那个问题解决了,把透明的panel去掉,直接使用透明属性的button,然后在form.load加入
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true); //双缓冲
这样的话,自由缩放的时候,屏幕基本不闪烁了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询