Прежде всего, извините за вопрос, который для некоторых может показаться довольно простым, но я только начал изучать 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: Я кровавый идиот. Я должен просто использовать массив.
Есть ли способ обойти это, или лучший и более простой способ создания моих кораблей?
Большое спасибо за вашу помощь заранее.
Приветствия.