c# - 有没有办法在一个循环中将多个孩子添加到画布?
问题描述
首先,很抱歉这个问题对某些人来说似乎很容易,但我这个学期才开始学习 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:我是一个该死的白痴。我应该只使用一个数组。
有没有解决这个问题的方法,或者有更好更简单的方法来创建我的船?
非常感谢您提前提供的帮助。
干杯。
解决方案
推荐阅读
- python - Django - 在同一个模板(ajax 和表单)中处理多个 CSRF 令牌禁止(CSRF 令牌丢失或不正确。)
- ruby-on-rails - rails recaptcha 错误:我们检测到您的站点未验证 reCAPTCHA 解决方案。它一直返回 false
- c# - 在 C# 中连续读取 XML
- matlab - MATLAB - 'lib\sift\bin\siftfeat' 未被识别为内部或外部命令、可运行程序或批处理文件
- java - 如果 JSON 数组为空,则更改文本
- javascript - 从 json 获取值并设置为选择选项
- javascript - for 循环是否等同于方法?
- google-chrome - 我在谷歌浏览器上的 PDF 阅读器出现问题
- reactjs - 我如何在反应中添加或删除滚动类?
- oauth-2.0 - 在通过 client_credentials 授权请求的令牌中返回 Azure AD 应用程序角色