最近碰到一个问题,就是使用Biamap绘图的时候,为了防止闪烁,使用了双缓存绘制的方式,但是会碰到内存急剧增加的情况,而且在XP的工控机和Win10的机器上运行结果不一样,在Win10
上运行的时候,内存增加的不是很明显,而在XP机子上运行一段时间,就会直接自动退出,我怀疑是XP工控机内存没有及时的释放,所以导致程序自动退出,所以每次绘图完后调用GC.Collect()
的方式手动释放掉,不仅Win10的内存稳定在几十M,而且XP也可以长时间稳定运行。
/// <summary> /// 绘制图像 /// </summary> /// <param name="graphics"></param> 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回收已经释放的资源 }
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/281495.html