作者:yangdawen1985_156 | 来源:互联网 | 2023-02-05 20:58
最近碰到一个问题,就是使用Biamap绘图的时候,为了防止闪烁,使用了双缓存绘制的方式,但是会碰到内存急剧增加的情况,而且在XP的工控机和Win10的机器上运行结果不一样,在Win
最近碰到一个问题,就是使用Biamap绘图的时候,为了防止闪烁,使用了双缓存绘制的方式,但是会碰到内存急剧增加的情况,而且在XP的工控机和Win10的机器上运行结果不一样,在Win10
上运行的时候,内存增加的不是很明显,而在XP机子上运行一段时间,就会直接自动退出,我怀疑是XP工控机内存没有及时的释放,所以导致程序自动退出,所以每次绘图完后调用GC.Collect()
的方式手动释放掉,不仅Win10的内存稳定在几十M,而且XP也可以长时间稳定运行。
///
/// 绘制图像
///
///
public void DrawImage(Graphics graphics)
{
if (_ShowImage != null)
{
//移动g的中心点
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.PixelOffsetMode = PixelOffsetMode.HighSpeed;
graphics.TranslateTransform(m_ptCanvasX, m_ptCanvasY); //设置坐标系统的原点
graphics.RotateTransform(rotateAngle); //旋转
graphics.ScaleTransform(showZoom, showZoom); //设置缩放比
graphics.DrawImage(_ShowImage, m_ptBmpX, m_ptBmpY); //在指定位置绘制图像
graphics.ResetTransform(); //重置坐标系(重置为单位矩阵)
}
else
{
graphics.Clear(Color.Black);
}
DrawROI(graphics);
GC.Collect();//手动GC回收已经释放的资源
}