winforms 我必须在方法中处置位图吗?

dfuffjeb  于 2022-11-17  发布在  其他
关注(0)|答案(2)|浏览(131)

该方法返回位图变量nb,是否需要在方法中的某个位置处置此变量?如果处置,应在何处处置?

public Bitmap cropAtRect(Bitmap b, Rectangle r)
        {
            Bitmap nb = new Bitmap(r.Width, r.Height);
            using (Graphics g = Graphics.FromImage(nb))
            {
                g.DrawImage(b, -r.X, -r.Y);
                return nb;
            }
        }
xytpbqjk

xytpbqjk1#

disposing的目的是释放一个对象所占用的资源。Disposing是在处理完一个对象后所做的事情。如果你的方法返回Bitmap,那么它显然希望在方法完成后使用Bitmap。所以在方法中处理它没有任何意义。可能有意义的是,调用方法的代码将使用它返回的Bitmap,然后释放它,例如。

Bitmap bmp;
Rectangle rect;

// ...

using (var newBmp = cropAtRect(bmp, rect))
{
    // Use newBmp here.
}
cclgggtu

cclgggtu2#

在最后一次对位图的引用超出作用域之后,c#应该会为您解决这个问题。如果您对此感到担心,可以在调试时观察内存使用情况,或者编写一个测试用例,用您的函数创建许多位图。

相关问题