Возможен ли List<GraphicsPath> в C#?

Я пытаюсь использовать список GraphicsPath вместо массива, поскольку я не знаю количество путей, которые будут созданы пользователем.

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

После этого я заполняю список следующим образом:

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

Но когда я пытаюсь использовать GraphicsPath из списка, хотя свойство Count является правильным, я не могу использовать объект, как показано ниже, из-за исключения аргумента.

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?? Или делать что-то неправильно?

1 ответ

Решение
using(GraphicsPath myPath = new GraphicsPath())
{
   myPath.AddPolygon(myPoints);
   PathDB.Add(myPath);
} // this disposes myPath

Это локальный графический путь. Ваш using блок DisposeЕсли после того, как сделано, Так что вам нужно удалить это using блокируйте и вместо этого избавьтесь от своих путей, когда они вам больше не нужны.

Другие вопросы по тегам