编程词典
明日图书
明日软件
用户注册
用户登录
站内
  当前位置:编程词典服务网 >> 编程词典社区论坛 >> 如果在控件上进行动态绘...
  · 如果在控件上进行动态绘制时不让其闪烁

用户:  明日科技
发帖:  417 篇
作品:  1 个
回复:  2 篇
技术分:  805 分
等级:  
注册:  2009-09-07 06:37:23



发表于:2010-06-10 15:27:53
          楼主

如果在控件上进行动态绘制时不让其闪烁

   一般情况下,在控件上进行动态绘制时,会出现闪烁效果,为了解决这一问题,可以用SetStyle方法来减少控件的闪烁。下面在窗体中将panel1控件设置为不闪烁的效果。代码如下:

242342

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace ppp

{

 

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

定义一个Panel控件的类,在该类中对Panel控件的样式进行一下设置,使其减少闪烁功能。代码如下:

        public class pp : Panel

        {

            public pp()

            {

                SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);

                UpdateStyles();

            }

        }

说明:ControlStyles.OptimizedDoubleBuffer值是先在缓冲区中绘制,而不是直接绘制在屏幕上。ControlStyles.AllPaintingInWmPaint值是用来减少闪烁。

在窗体的加载事件中,窗体中的panel1控件进行实例化,以实现不让其闪烁。代码如下:

        private void Form1_Load(object sender, EventArgs e)

        {

            panel1 = new pp();

        }

    }

}

在制作第三方控件时,也可以直接去除闪烁效果,直接将大括号中的代码添加到第三方控件的重载方法中(以自定义控件Panel为例)。代码如下所示:

    public partial class UserPanel : Panel

    {

        public UserPanel()

        {

            InitializeComponent();

            SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);

            UpdateStyles();

        }

    }

 

本帖赏分:0 分   回复数:0 篇     
修改   删除   引用   回复
该帖暂无回复!
吉林省明日科技有限公司提供技术支持. 
Copyright © 1999-2008 吉林省明日科技有限公司. 吉ICP备10002740
当前时区 GMT+8, 今天是 
刷新页面 - 关于我们 - 设为首页