我正在尝试编写一个C#WPF应用程序,它可以生成许多图像(代表行星),然后相对于彼此移动它们。我有一个标准的C#winform应用程序可以做到这一点,但我正在尝试将其转换为WPF,以便在快速移动图像时解决可怕的刷新问题。
我已经做了20多年的软件开发人员,已经使用.Net / C#工作了7年,但直到本周才开始使用WPF,而且我有点不知所措。
我有一个位图图像,我用于所有图像,现在需要以编程方式将任意数量的图像添加到画布,然后将它们放在设置位置。我目前必须添加每个图像的代码部分是
string BodyName = "Body" + BodyCount.ToString();
Image BodyImage = new Image
{
Width = moonBitmap.Width,
Height = moonBitmap.Height,
Name = BodyName,
Source = new BitmapImage(new Uri(moonBitmap.UriSource.ToString(), UriKind.Relative)),
};
MainCanvas.Children.Add(BodyImage);
MainCanvas.SetTop(BodyImage, NewBody.YPosition);
MainCanvas.SetLeft(BodyImage, NewBody.XPosition);
(NewBody.YPosition和NewBody.XPosition都是双倍的。)
这看起来好像它会在画布上添加任意数量的图像。然而,SetTop和SetLeft方法,我认为我需要用来定位图像的方法将无法编译,我从intellisense得到以下消息
"Member 'System.Windows.Controls.Canvas.SetTop(System.Windows.UIElement,double)' cannot be accessed with an instance reference; qualify it with a type name instead."
作为WPF的新手,我认为我做的事情很愚蠢。谁能告诉我应该怎么做呢?
由于
答案 0 :(得分:8)
SetTop
和SetLeft
是Canvas
类的静态方法,您通过Canvas
实例引用它们。尝试通过类名称引用这些方法:
Canvas.SetTop(BodyImage, NewBody.YPosition);
Canvas.SetLeft(BodyImage, NewBody.XPosition);