解决思路:
解决闪烁问题核心思路就是,一次将绘制完成后的结果全部输出到要显示区域.
可以先拿一个bitmap暂时存放绘制完的对象,然后将这些对象在转移到要显示的区域.
代码如下
public Panel m_drawpanel = null;//要显示的控件,或者区域,此处用panel控件
public Bitmap m_map = new Bitmap(w, h);暂时存放的绘图内容.w宽,h高
将暂存bitmap输出到要绘制的地方.
public void OutPutToScene()
{
BufferedGraphicsContext currentContext = BufferedGraphicsManager.Current;//获取当前绘图上下文对象
BufferedGraphics myBuffer = currentContext.Allocate(m_drawpanel.CreateGraphics(), m_drawpanel.DisplayRectangle);//设置要绘制的区域
Graphics g = myBuffer.Graphics;//获取绘图工具对象
g.DrawImage(m_map, 0, 0);//绘制
myBuffer.Render();//输出到设备上
myBuffer.Dispose();//释放资源
currentContext.Dispose();//释放资源
}