C# form里的panel闪烁伤不起啊!~~~

我用C#做了个模拟键盘的项目,主要是使用透明控件,在panel里放置keybutton,原先为了能在切换页面的时候省事(button的visible),现在遇到个很严重的... 我用C#做了个模拟键盘的项目,主要是使用透明控件,在panel里放置keybutton,原先为了能在切换页面的时候省事(button的visible),现在遇到个很严重的问题,当form拉伸时,单独透明的按钮拉伸时不会闪烁,但是在panel里的控件闪烁厉害!!求大神,如何解决panel的闪烁问题!!!是否有属性可以修改?form的DoubleBuffer属性已经改了~~ 展开
 我来答
草薙在
2012-06-29 · TA获得超过4795个赞
知道大有可为答主
回答量:6187
采纳率:50%
帮助的人:6284万
展开全部
没用的,winform不适合做这种大量刷新的工作,你要了解下windows工作原理和wmpaint原理就知道怎么回事了
这种事情一般都是自己绘图,用gdi+,然后加doublebuffer就不会出现闪耀
更多追问追答
追问
自己绘图???
我这个原本就有背景图,只是在keyboard的背景图的基础上加上PANEL,然后添加按钮控件。
你说的doublebuffer属性只有在form上有,我在panel里没看到。。
好不容易把所以控件跟随窗体变化而变化的问题解决了,又出现这么个闪烁问题,真郁闷!
是不是该把panel去掉?直接使用透明的控件。。只是多了些繁琐的button.visible。。。。
追答
控件没法透明,winform做不了这么高级的事情,要不你用wpf,比这个容易得多,要不你就自己画
26779260
2012-07-01 · TA获得超过229个赞
知道答主
回答量:124
采纳率:0%
帮助的人:140万
展开全部
有同感,我做的透明控件拖拉时总是闪屏。winform似乎在这个方面有所欠缺
追问
嗯,拖动的时候会有比较明显的闪屏,但是透明的控件主要不会用来拖动吧。我那个问题解决了,把透明的panel去掉,直接使用透明属性的button,然后在form.load加入

SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true); //双缓冲
这样的话,自由缩放的时候,屏幕基本不闪烁了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式