我正在制作一些实用程序类,这些实用程序类可以制作不同类型的符号,以放置在CAD绘图的立面上。我想确保如果我需要释放GraphicsPath对象,我会这么做。
在下面的代码中,从getCircle函数内部,它表明我正在将myPath“GraphicsPath”对象传递给AddStringToPath函数。
我不能为此使用using(){}作用域,因为我将myPath图形对象作为引用传递。
这个设计可以使用吗?或者我需要用另一种方法来确保垃圾收集?
GraphicsPath getCircle(Graphics dc, string text = "")
{
GraphicsPath myPath = new GraphicsPath();
myPath.AddEllipse(symbolCircle);
AddStringToPath(dc, ref myPath, text);
return myPath;
}
void AddStringToPath(Graphics dc, ref GraphicsPath path, string text)
{
SizeF textSize = dc.MeasureString(text, elevFont);
var centerX = (path.GetBounds().Width / 2) - (textSize.Width / 2);
var centerY = (path.GetBounds().Height / 2) - (textSize.Height / 2);
// Add the string to the path.
path.AddString(text,
elevFont.FontFamily,
(int)elevFont.Style,
elevFont.Size,
new PointF(centerX + 2, centerY + 2),
StringFormat.GenericDefault);
}
2条答案
按热度按时间q7solyqu1#
创建路径的函数应该在后面的using语句中使用
如果调用函数
CreateCircle
而不是getCircle
,eni9jsuy2#
你不需要在这里把路径作为
ref
传递。ref
只有在你想改变path
在调用函数中指向的东西时才有用。删除ref
并像往常一样添加using
。阅读值类型和引用类型,以及
ref
实际上有什么用处。