0

Mainと呼ばれるアプリケーションのメインフォームのキャンバス ( Layout ) にいくつかの Image オブジェクトをレンダリングしようとしています。C# と WPF を使用してアプリケーションを作成していますが、別のクラスからレンダリングする画像を取得できませんが、メインフォームの部分クラスでは問題なく動作します。

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);
        }
    }

どんな助けでも素晴らしいでしょう、ありがとう

4

1 に答える 1

0

new instance of MainUI に表示されるものとは異なるすべてのメソッドを作成しています。

代わりに、キャンバスのインスタンスをメソッドに渡し、次のように描画します-

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()です。

于 2012-11-24T13:53:42.227 に答える