你这样试试 我的就是这样做的。新建一个Bitmap,bmp为全局变量,然后再画
bmp = new Bitmap(this.Width, this.Height);
using (Graphics g = Graphics.FromImage(bmp))
{
pictureBox1.Image = bmp;
}
只要用到g的时候 就 这样写
using (Graphics g = Graphics.FromImage(bmp))
{
中间是你的代码
}
就可以了 。
不用这么麻烦定义全局的Graphics,一般也没有这么做的
你的pictureBox已经是全局变量,可以这样获得Graphics对象
Graphics g =Graphics .FromHandle(picturebox1.Handle);
你试试把这个定义成个static静态的变量 ,Graphics每次好像在页面稍微一改动,就从新加载了,在Onpaint里面重绘控件
使用单件模式,定义一个属性,在第一次使用的时候创建,之后直接使用这个graphics
Graohics _g; //不要使用_g,使用g绘制
Graphics g
{
get
{
lock(this)
{
if(_g != null)
{
return _g;
}
lock(this)
{
_g = picturebox1.CreateGraphics();
return _g;
}
}
}
}