用双缓冲技术解决刷新屏幕时的闪屏问题
2015-03-12 15:13
344 查看
参考文档:http://www.2cto.com/kf/201404/295500.html
以下为完整的示例代码:
该示例是展示一个在界面上运动的圆形
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 panelLib2Test
{
public partial class Form3 : Form
{
int val = 1;
Bitmap bmp = new Bitmap(600, 600);
Graphics g;
public Form3()
{
InitializeComponent();
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
//开启双缓冲
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true);
g = Graphics.FromImage(bmp);
}
private void Form3_Load(object sender, EventArgs e)
{
g.FillEllipse(Brushes.Green, val * 10, val * 10, 10, 10);
g.DrawEllipse(new Pen(System.Drawing.Color.Red), val, 10, 100, 100);
this.CreateGraphics().DrawImage(bmp, 0, 0);
}
private void Form3_Paint(object sender, PaintEventArgs e)
{
//g.FillEllipse(Brushes.Green, val * 10, val * 10, 10, 10);
//g.DrawEllipse(new Pen(System.Drawing.Color.Red), val, 10, 100, 100);
//this.CreateGraphics().DrawImage(bmp, 0, 0);
}
private void timer1_Tick(object sender, EventArgs e)
{
val++;
label1.Text = val.ToString();
g.Clear(Form3.DefaultBackColor);//这是清除画布中前一个图片
g.DrawEllipse(new Pen(System.Drawing.Color.Red), val, 10, 100, 100);
this.CreateGraphics().DrawImage(bmp, 0, 0);
}
}
}
以下为完整的示例代码:
该示例是展示一个在界面上运动的圆形
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 panelLib2Test
{
public partial class Form3 : Form
{
int val = 1;
Bitmap bmp = new Bitmap(600, 600);
Graphics g;
public Form3()
{
InitializeComponent();
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
//开启双缓冲
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true);
g = Graphics.FromImage(bmp);
}
private void Form3_Load(object sender, EventArgs e)
{
g.FillEllipse(Brushes.Green, val * 10, val * 10, 10, 10);
g.DrawEllipse(new Pen(System.Drawing.Color.Red), val, 10, 100, 100);
this.CreateGraphics().DrawImage(bmp, 0, 0);
}
private void Form3_Paint(object sender, PaintEventArgs e)
{
//g.FillEllipse(Brushes.Green, val * 10, val * 10, 10, 10);
//g.DrawEllipse(new Pen(System.Drawing.Color.Red), val, 10, 100, 100);
//this.CreateGraphics().DrawImage(bmp, 0, 0);
}
private void timer1_Tick(object sender, EventArgs e)
{
val++;
label1.Text = val.ToString();
g.Clear(Form3.DefaultBackColor);//这是清除画布中前一个图片
g.DrawEllipse(new Pen(System.Drawing.Color.Red), val, 10, 100, 100);
this.CreateGraphics().DrawImage(bmp, 0, 0);
}
}
}
相关文章推荐
- 双缓冲方法解决屏幕刷新闪烁的问题
- 双缓冲方法解决屏幕刷新闪烁的问题
- wxWidgets学习 - 双缓冲技术解决屏幕闪烁问题
- 双缓冲技术解决屏幕刷新闪烁
- C#中利用双缓冲技术解决绘图闪屏问题。
- 应用双缓冲技术解决J2ME中的画面闪烁的问题
- VC使用双缓存技术,解决闪屏问题
- Android实战技术: 用Dimension解决多屏幕适配的问题
- 解决iscroll.js上拉下拉刷新手指划出屏幕页面无法回弹问题
- MFC双缓冲作图解决刷新闪屏问题
- Android实战技术: 用Dimension解决多屏幕适配的问题
- Android实战技术: 用Dimension解决多屏幕适配的问题
- Android实战技术: 用Dimension解决多屏幕适配的问题
- MFC中屏幕刷新闪烁问题解决方法总结
- 应用双缓冲技术解决画面闪烁的问题
- (加精!!!)Android实战技术: 用Dimension解决多屏幕适配的问题
- 屏幕刷新问题解决方法总结
- Curses中屏幕频繁刷新的问题的解决
- 【MFC】利用双缓冲技术解决屏闪问题
- 有效解决WinForm窗体背景图片导致闪屏刷新问题