|
本帖最后由 tangshun 于 2013-5-25 03:11 编辑
一般情况下,在控件上进行动态绘制时,会出现闪烁效果,为了解决这一问题,可以用SetStyle方法来减少控件的闪烁。下面在窗体中将panel1控件设置为不闪烁的效果。代码如下:
[code=csharp]
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();
}
}
[/code]
|
|