WPFで動的にコントロールを作成配置するサンプル2

コンピュータ
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;

namespace NoXaml01;

/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        PixelFormat pf = PixelFormats.Bgra32;
        const double dpi = 96.0d;
        const int w = 128;
        const int h = 128;
        int stride = (w * pf.BitsPerPixel + 7) / 8;
        byte[] pixels = new byte[stride * h];

        // ランダム画像
        Random value = new();
        value.NextBytes(pixels);

        BitmapSource bs = BitmapSource.Create(
            w, h, dpi, dpi, PixelFormats.Bgra32, null, pixels, stride);
        
        Image image1 = new()
        {
            Source = bs,
        };

        var grid = this.Content as System.Windows.Controls.Grid;
        if (grid is not null)
        {
            grid.Children.Add(image1);
        }
    }
}

実行すると以下の様なウィンドウが表示されました。

今回はWindowsオブジェクトのContentプロパティからXAMLで設定されているGridコントロールを取得し、そちらのChildrenとしてImageコントロールを追加しています。

コメント