.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();
}
浙公网安备 33010602011771号