【问题标题】:Programmatically add images and position them on WPF canvas以编程方式添加图像并将其放置在 WPF 画布上
【发布时间】:2014-03-15 01:13:09
【问题描述】:

我正在尝试编写一个 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 方法,我认为是我需要用来定位图像的方法不会编译,我从智能感知中得到以下消息

"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 的新手,我认为我在做一些愚蠢的事情。谁能告诉我应该怎么做?

谢谢

【问题讨论】:

    标签: c# wpf image canvas


    【解决方案1】:

    SetTopSetLeftCanvas 类的静态方法,您通过Canvas 实例引用它们。尝试通过类名引用这些方法:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 2018-05-26
      • 1970-01-01
      • 2017-08-23
      相关资源
      最近更新 更多