在 C# 中可以使用 List<GraphicsPath> 吗?

Is List<GraphicsPath> possible in C#?

我正在尝试使用 GraphicsPath 列表而不是数组,因为我不知道用户将创建的路径数量。

List<GraphicsPath> PathDB = new List<GraphicsPath>();

在此之后我填写如下列表:

using(GraphicsPath myPath = new GraphicsPath())
{
   myPath.AddPolygon(myPoints);
   PathDB.Add(myPath);
}

但是当我尝试使用列表中的 GraphicsPath 时,虽然计数 属性 是正确的,但由于参数异常,我无法使用如下所示的对象。

num = PathDB.Count;
for(int k=0; k < num; k++)
   {
      using(GraphicsPath myCurrentPath = new GraphicsPath())
      {
         myCurrentPath = PathDB[k];
         myCurrentPath.AddLine(0,0,400,400); //at this stage exception is thrown 
         myGraphics.DrawPath(myPen, myCurrentPath)
      }
   }

是否与 GraphicsPath 被 Disposabe 有关?还是做错了?

using(GraphicsPath myPath = new GraphicsPath())
{
   myPath.AddPolygon(myPoints);
   PathDB.Add(myPath);
} // this disposes myPath

这是本地图形路径。如果完成,你的 usingDispose 将它放在范围之后。因此,您需要 删除 那个 using 块,而不是在您不再需要它们时处理您的路径。