C# 以编程方式添加图像并将其放置在WPF画布上

C# 以编程方式添加图像并将其放置在WPF画布上,c#,wpf,image,canvas,C#,Wpf,Image,Canvas,我正在尝试编写一个C#WPF应用程序,它将能够生成大量图像(代表行星),然后将它们相对移动。我有一个标准的C#winform应用程序可以做到这一点,但我正在尝试将其转换为WPF,以避免在快速移动图像时出现可怕的刷新问题 我已经做了20多年的软件开发人员,在.Net/C中工作了7年,但直到本周才使用WPF,我有点挠头 我有一个位图图像,用于所有图像,现在需要通过编程将许多图像中的任何一个添加到画布,然后将它们放置在设置的位置。我现在必须添加的代码部分是 string Bod

我正在尝试编写一个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的新手,我想我在做一些蠢事。谁能告诉我该怎么做


感谢
SetTop
SetLeft
Canvas
类的静态方法,您通过
Canvas
实例引用它们。请尝试按类名引用这些方法:

Canvas.SetTop(BodyImage, NewBody.YPosition);
Canvas.SetLeft(BodyImage, NewBody.XPosition);