Net Core教程

c#使用Bitmap绘图的时候,内存增大问题

本文主要是介绍c#使用Bitmap绘图的时候,内存增大问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

最近碰到一个问题,就是使用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回收已经释放的资源
        }

 

这篇关于c#使用Bitmap绘图的时候,内存增大问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!