博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#防止在画面上闪烁的Button
阅读量:6617 次
发布时间:2019-06-25

本文共 830 字,大约阅读时间需要 2 分钟。

        当在winform中放置很多Button控件,并且画面还有背景,每个Button都还有背景的时候,显示画面时就会产生闪烁的效果,如果机器性能好的话,画面会比较快的加载完,闪烁的情况不会很明显,但是如果机器性能不佳的话,则会给用户很差的体验。即使画面和Button采用了双缓存,效果也不明显。因此需要对C#中的Button加以重载并重写部分代码。就可以避免这种情况发生了。废话不多说了,代码如下:

 public class ButtonEx : Button

    {
        public ButtonEx()
        {
        }
     
        //基类的方法不能用
        protected override void OnPaintBackground(PaintEventArgs e)
        {
            return;
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            //一定要设置背景图哦
            if (this.BackgroundImage != null)
            {
                e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                e.Graphics.DrawImage(this.BackgroundImage, new System.Drawing.Rectangle(0, 0, this.Width, this.Height),
                0, 0, this.BackgroundImage.Width, this.BackgroundImage.Height,
                System.Drawing.GraphicsUnit.Pixel);
            }

           //基类的OnPaint方法不能使用

            //base.OnPaint(e);
        }
        
    }

转载于:https://www.cnblogs.com/kevinGao/archive/2011/11/29/2270747.html

你可能感兴趣的文章
积跬步,聚小流------Bootstrap学习记录(1)
查看>>
vmware workstation14永久激活密钥分享
查看>>
Myeclipse中打开接口实现类的快捷键
查看>>
使用JdbcTemplate和JdbcDaoSupport
查看>>
Glibc 和 uClibc
查看>>
Mysql学习第三课-分析二进制日志进行增量备份和还原
查看>>
HDU 6073 - Matching In Multiplication | 2017 Multi-University Training Contest 4
查看>>
如何检测域名是否被微信屏蔽 微信域名检测接口API是如何实现
查看>>
POJ1611-The Suspects
查看>>
Linux下安装Python-3.3.2【转】
查看>>
LeetCode OJ:Merge Two Sorted Lists(合并两个链表)
查看>>
功能测试
查看>>
【BZOJ 1901】Dynamic Rankings
查看>>
Github-Client(ANDROID)开源之旅(二) ------ 浅析ActionBarSherkLock
查看>>
React-Native 之 GD (十六)首页筛选功能
查看>>
SSISDB5:使用TSQL脚本执行Package
查看>>
asp.net后台进程做定时任务
查看>>
java接口中多继承的问题
查看>>
索引笔记《二》确定需要建立索引的列
查看>>
libjpeg的问题
查看>>