Есть ли способ добавить несколько детей на холст в цикле? - PullRequest
0 голосов
/ 29 апреля 2020

Прежде всего, извините за вопрос, который для некоторых может показаться довольно простым, но я только начал изучать WPF в этом семестре.

Я пишу проект WPF как «цель» семестра. Я должен использовать данные JSON, чтобы разместить свой объект (космический корабль) на экране. Если я поставлю на экран только один из кораблей, я могу легко добавить его следующим образом:

...
ship.Name = users[y].name;            
this.RegisterName(ship.Name, ship);
BitmapImage bi3 = new BitmapImage();
bi3.BeginInit();
bi3.UriSource = new Uri("C:/Users/Szabi/Desktop/spaceship.png", UriKind.Relative);
bi3.CacheOption = BitmapCacheOption.OnLoad;
bi3.EndInit();
ship.Source = bi3;
ship.Width = 100;
ship.Height = 150;
distance = Convert.ToDouble(shiplist[i].Distance);
velocity = Convert.ToDouble(shiplist[i].Velocity);
_angle = Convert.ToDouble(shiplist[i].Angle);
while (_angle[i] > 6.28)
  {
    _angle[i] = _angle[i] - (2 * Math.PI);
  }
left = (Math.Cos(Convert.ToDouble(shiplist[i].Angle))) * distance[i];
top = (Math.Sin(Convert.ToDouble(shiplist[i].Angle))) * distance[i];
Canvas.SetLeft(ship, (left + (sun.Width)));
Canvas.SetTop(ship, (top + (sun.Height)));
canvas.Children.Add(ship);    
ship.ToolTip = ship.Name;
...

Затем я могу переместить его, изменив Canvas.SetLeft и SetTop в новом методе, который я вызываю каждый секунд или около того.

Однако, если я попытаюсь поместить это в цикл и создать столько серверов, сколько идентификаторов находится на сервере, это, очевидно, не сработает, поскольку холст может иметь только одного дочернего элемента с именем "корабль".

РЕДАКТИРОВАТЬ: забыл упомянуть. Каждый из этих «кораблей» должен быть переменным. Они объявлены так:

Image ship = new Image(); 

Насколько я знаю, я могу только поместить эти переменные в canvas.Children.Add (). Но если я добавлю первый корабль, я не смогу добавить больше.

EDIT2: Я кровавый идиот. Я должен просто использовать массив.

Есть ли способ обойти это, или лучший и более простой способ создания моих кораблей?

Большое спасибо за вашу помощь заранее.

Приветствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...