Возможен ли 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
блокируйте и вместо этого избавьтесь от своих путей, когда они вам больше не нужны.