【发布时间】:2017-10-17 07:46:29
【问题描述】:
我有一个辅助方法,它使用自己的 using 语句创建位图。最初我遇到的问题是,当返回由 using 语句控制的对象时,一旦离开范围,它将被处置。所以,在这个 article 的帮助下,我能够弄清楚这也是我的问题。
所以我返回一个克隆版本并将其传递给 Graphics 类的 DrawImage,如下所示,
g.DrawImage(getInputDataImage(dr.DRODAT, oFont, 430, 87, black, white, Color.Transparent), new Point(280, 23)); //DATE
获取输入数据图像:
public static Image getInputDataImage(...
{
using(Bitmap bitmap = new Bitmap(width, height))
using (Graphics graphics = Graphics.FromImage(bitmap))
using(var format = new StringFormat{Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center})
{
//set coordinates on canvas to put barcode
Point point = new Point(50, 50);
RectangleF layoutRectangle = new RectangleF(new PointF(0, 0), new SizeF(bitmap.Width, bitmap.Height));
graphics.Clear(color);
graphics.DrawString(text, font, fontBrush, layoutRectangle, format);
return (Bitmap)bitmap.clone();
}
}
DrawImage 会在它使用的类的析构函数中调用 dispose 吗?像这样使用时,我应该如何处理处理 Bitmap 类?在某些情况下,我调用 getInDataImage 辅助方法,每次都返回一个新对象。试图了解如何保持这种方式。
从帮助程序返回原始对象而不将其包装在 using 语句中并在 main 方法中处理它是否更好?
【问题讨论】: