bmp = new Bitmap(600, 600);//创建一个位图 Graphics g = Graphics.FromImage(bmp);从位图创建一个画布 g.DrawXXX;//你的绘图代码然后,你可以把这个位图对象作为窗口或image组件的背景。这样,窗口将自己管理重绘的过程。或者,你在窗口的Paint事件里: Graphics g = e.Graphics; g.DrawXXX;每次当窗口需要显示的时候,这段代码都绘执行,实现重绘。不过,如果你绘制的东西带有透明度,可能会叠加。你可以在绘图之前对背景使用窗口的默认背景色进行一次清除。
应该在Paint事件里编写绘图代码,这样当窗口被遮挡或其它操作导致其图像被“擦除”时,窗口的paint事件将被触发,会执行你的绘图代码把图补上。你还可以在Paint事件中获取无效的区域(被擦除的矩形范围),然后让绘图代码只针对这一部分重绘,达到提高效率的目的。
此外:创建一个位图对象,使用你现在的绘图代码绘制在位图对象的画布上,然后将这个位图对象当作窗口的背景图,那系统将自动管理上面的过程。
Graphics g = Graphics.FromImage(bmp);从位图创建一个画布
g.DrawXXX;//你的绘图代码然后,你可以把这个位图对象作为窗口或image组件的背景。这样,窗口将自己管理重绘的过程。或者,你在窗口的Paint事件里:
Graphics g = e.Graphics;
g.DrawXXX;每次当窗口需要显示的时候,这段代码都绘执行,实现重绘。不过,如果你绘制的东西带有透明度,可能会叠加。你可以在绘图之前对背景使用窗口的默认背景色进行一次清除。