苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 11187|回复: 13

[其他] 求助~winform 窗体闪烁问题

[复制链接]
发表于 2013-5-17 15:06:55 | 显示全部楼层 |阅读模式
  在winform程序中窗体设置了背景图片,上面放个panel,背景色设置为透明色,程序中动态的往这个panel中增加控件的时候panel闪烁的厉害,利用双缓存的方法解决不了。(我重写了onpaint方法),求助飞哥……


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-5-17 15:24:54 | 显示全部楼层
具体看下代码吧,
 楼主| 发表于 2013-5-17 15:31:09 | 显示全部楼层
[code=csharp]        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)  //画圆角窗体,圆角半径5
        {
            GraphicsPath path = new GraphicsPath();

            int x = 0;
            int y = 0;
            int width = this.Width;
            int height = this.Height;
            int a = 10;

            Graphics graphic = CreateGraphics();
            path.AddArc(x, y, a, a, 180, 90);
            path.AddArc(width - a, y, a, a, 270, 90);
            path.AddArc(width - a, height - a, a, a, 0, 90);
            path.AddArc(x, height - a, a, a, 90, 90);
            path.CloseAllFigures();

            //Region region = new Region(path);
            this.Region = new Region(path);
        }[/code]

下面是我写的测试代码
[code=csharp]        private void button1_Click(object sender, EventArgs e)
        {
            Label label = new Label();
            label.AutoSize = true;
            label.BackColor = Color.Transparent;
            label.ForeColor = Color.LimeGreen;
            label.Font = new Font("微软雅黑", 12, FontStyle.Regular);
            label.Text = "服务器";

            this.tableLayoutPanel1.Controls.Add(label);
        }[/code]
发表于 2013-5-17 15:37:49 | 显示全部楼层
如果你只是添加一个背景颜色其实我不建议人重绘控件,直接添加一个背景就行,没必要重绘吧,这个也可能会一些显示器有关,双缓冲现在解决不了这个问题了,我的之前的皮肤就是有这个问题,但是使用图片背景就没有问题了
 楼主| 发表于 2013-5-17 15:40:43 | 显示全部楼层
我写onpaint方法是为了实现圆角窗体的,但是我试过注释掉重写onpaint的那段代码,还是会有闪烁问题
发表于 2013-5-17 15:56:00 | 显示全部楼层
你怎么添加的背景
 楼主| 发表于 2013-5-17 16:00:19 | 显示全部楼层
站长苏飞 发表于 2013-5-17 15:56
你怎么添加的背景

主窗体Mainform,在上面放了一个Panel1,
Panel1的BackColor=Transparent
             BackgroundImage="sink.jpg"
Panel1上面放了一个tableLayoutPanel1
tableLayoutPanel1的 BackColor=Transparent
发表于 2013-5-17 16:06:22 | 显示全部楼层
你设置了这个,BackgroundImage="sink.jpg" 这个就不用设置了吧BackColor=Transparent你不设置看看是什么情况,就是不透明
 楼主| 发表于 2013-5-17 16:11:52 | 显示全部楼层
站长苏飞 发表于 2013-5-17 16:06
你设置了这个,BackgroundImage="sink.jpg" 这个就不用设置了吧BackColor=Transparent你不设置看看是什么情 ...

还是那样,把panel1的BackColor设置成Control,结果是一样的。
出现闪烁的的地方就是tableLayoutPanel1的那块区域,如果我把tableLayoutPanel1的BackColor设置成不透明的其他颜色,就不会闪烁了,Why?
发表于 2013-5-17 16:15:38 | 显示全部楼层
轉身遇見沵 发表于 2013-5-17 16:11
还是那样,把panel1的BackColor设置成Control,结果是一样的。
出现闪烁的的地方就是tableLayoutPanel1的 ...

这就对了, 是透明的原因,你看看不设置透明能不能达到你要的效果。如果能就不要使用透明了。
这估计是显示器问题

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-26 16:29

© 2014-2021

快速回复 返回顶部 返回列表