Создание массива графических путей в vb.net

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

Имеет ли это смысл?

Я объявил это в основной форме

Private _Paths() As System.Drawing.Drawing2D.GraphicsPath

и сделать это в саб

 _Paths(20) = New GraphicsPath

Но по какой-то причине я получаю ошибку ссылки на объект во второй строке. Любая помощь?

После объявления я хочу пойти дальше и добавить строку к графическому пути, например, так

 _Paths(k).AddLine(x_loc(k), y_loc(k), x_loc(k + 1), y_loc(k + 1))

Согласно предложению использовать список:

Объявлен в основной класс

Private _Paths As List(Of System.Drawing.Drawing2D.GraphicsPath)

используя в саб

for k = 0 to 10
      'x_loc and y_loc calculations are done here

    _Paths.Add(New GraphicsPath)
    _Paths(k).AddLine(x_loc(k), y_loc(k), x_loc(k + 1), y_loc(k + 1))
next

по-прежнему получаю сообщение об ошибке при попытке создать новый экземпляр graphicspath

Там не должно быть никаких причин, эта ошибка должна появиться правильно?

Private _Paths As NEW List(Of System.Drawing.Drawing2D.GraphicsPath)

2 ответа

Решение

Вы не изменяете размер своего массива, вместо этого используйте List(Of GraphicsPath) и просто .Add их, как вам нужно.

Dim myPaths As New List(Of GraphicsPath)
'later in code
myPaths.Add(New GraphicsPath)
myPaths(0).AddLine(...)'etc...

Список должен быть объявлен с New

Dim YourList As New List(Of GraphicsPath)

Я заметил, что на вашем скриншоте вы на самом деле не добавляете новые объекты GraphicsPath. Вы не указываете параметры для его создания.

Dim Rec As New Rectangle(LocationX,LocationY, Width,Height) 'Create a binding rectangle to contain the graphic
Yourlist.Add(New GraphicsPath {Rec}) 'In place of 'Rec' you can also specify parameters directly

ИЛИ ЖЕ

Yourlist.Add(New GraphicsPath {LocationX,LocationY, Width,Height})
Другие вопросы по тегам