我试图在我的应用程序主窗体上的画布(布局)中渲染一些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);
}
}
任何帮助都会很棒,谢谢
答案 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()
创建新实例。