我正在制作一些实用程序类,这些实用程序类可以将不同类型的符号放置在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);
}
答案 0 :(得分:4)
您不需要在此处传递ref
路径。 ref
仅在您想要更改调用函数中path
指向的内容时才有用。摆脱ref
并像往常一样添加using
。
阅读值类型和引用类型以及ref
实际上有用的内容。
答案 1 :(得分:4)
创建路径的函数应稍后在using语句中使用
using(var path = getCircle(dc, "Text"))
{
// do something with path
}
如果您调用函数CreateCircle
而不是getCircle