CAD図面の立面図に配置するさまざまなタイプのシンボルを作成するユーティリティクラスをいくつか作成しています。GraphicsPathオブジェクトを破棄する必要がある場合は、それを確認したいと思います。
以下のコードでは、getCircle関数内から、myPath"GraphicsPath"オブジェクトをAddStringToPath関数に渡していることを示しています。
myPathグラフィックスオブジェクトを参照として渡しているため、using(){}スコープを使用できません。
このデザインは使用しても大丈夫ですか、それともガベージコレクションを確実にするためにこれを別の方法で実行する必要がありますか?
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);
}