.net 游戏绘图解决闪动问题

直接使用绘图函数在人物移动时,角色会不停的闪动,可以考虑用双缓冲技术来解决图像的闪动。

当数据量比较大时,绘图可能需要一定的时间,这时就会出现闪烁,双缓存技术便是解决这类问题的一种方法。双缓冲即在内存中创建一个与绘图区域一直的对象,先将图形绘制到内存上的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快绘图的速度。流程如下:

1)在内存中创建与画布一致的缓冲区

2)在缓冲区画图

3)将缓冲区图像拷贝到当前画布上

4)释放内存缓冲区

 

private void Draw()
{
pictureBox1.Refresh();
Bitmap bitmap = new Bitmap(@"dark.png");
bitmap.SetResolution(196, 196);
//创建在pictureBox1 上的图像gl
Graphics gl = pictureBox1.CreateGraphics();
//将图像画在内存上,并使g为pictureBox1上的图像
BufferedGraphicsContext currentContext = BufferedGraphicsManager.Current;

BufferedGraphics myBuffer = currentContext.Allocate(gl, this.DisplayRectangle);

Graphics g = myBuffer.Graphics;

g.DrawImage(bitmap, x, y);
//显示图像并释放资源
myBuffer.Render();
myBuffer.Dispose();

}

posted on 2016-09-21 22:46  白发黄鸡  阅读(203)  评论(0)    收藏  举报

导航