在另一个类中的主窗体上的画布中渲染图像

时间:2012-11-24 13:49:23

标签: c# wpf

我试图在我的应用程序主窗体上的画布(布局)中渲染一些Image对象,称为 Main 。我正在使用C#和WPF来创建应用程序,但是我无法从另一个类中获取图像,但在 Main 表单部分类中没有问题。

public static void renderStarscape(int density = 200)
    {
        Main main = new Main();
        Random random = new Random();
        for (int x = 0; x < density; x++)
        {
            int starSize = random.Next(1, 10);
            int starOpacity = random.Next(10, 30);
            int starX = random.Next(0, 800);
            int starY = random.Next(0, 500);
            Image Star = new Image();
            Star.Name = (x < 10) ? "star_0" + x : "star_" + x;
            Star.Source = streamImage("star_background.png");
            Star.Height = starSize;
            Star.Width = starSize;
            Star.Opacity = (double)starOpacity / 100;
            main.Layout.Children.Add(Star);
            Canvas.SetLeft(Star, starX);
            Canvas.SetTop(Star, starY);
            Canvas.SetZIndex(Star, 0);
        }
    }

任何帮助都会很棒,谢谢

1 个答案:

答案 0 :(得分:0)

您在方法中创建了一个全部new instance of Main,与UI上显示的不同。

而是将Canvas的实例传递给方法并绘制类似这样的东西 -

public static void renderStarscape( Canvas layout, int density = 200)
{
    // Use layout and remove the Main object initialization from the method.
    layout.Children.Add(Star);
}

它在部分声明类中工作的原因是你使用的是同一个实例,而不是为Main()创建新实例。