WPFヘルパー:ImageBufferHelper.cs – DrawRect・FillRect 矩形の描画

コンピュータ

ImageBufferHelper.cs

        // 矩形・グレースケール
        public void DrawRect(int x, int y, int w, int h, byte v)
        {
            for (int i = 0; i < w; i++)
            {
                SetPixel(x + i, y, v);
                SetPixel(x + i, y + h - 1, v);
            }

            for (int j = 0; j < h; j++)
            {
                SetPixel(x, y + j, v);
                SetPixel(x + w - 1, y + j, v);
            }
        }
        // 矩形・カラー
        public void DrawRect(int x, int y, int w, int h, byte r, byte g, byte b)
        {
            for (int i = 0; i < w; i++)
            {
                SetPixel(x + i, y, r, g, b);
                SetPixel(x + i, y + h - 1, r, g, b);
            }

            for (int j = 0; j < h; j++)
            {
                SetPixel(x, y + j, r, g, b);
                SetPixel(x + w - 1, y + j, r, g, b);
            }
        }
        // 矩形塗りつぶし・グレースケール
        public void FillRect(int x, int y, int w, int h, byte v)
        {
            for (int j = 0; j < h; j++)
            {
                for (int i = 0; i < w; i++)
                {
                    SetPixel(x + i, y + j, v);
                }
            }
        }
        // 矩形塗りつぶし・カラー
        public void FillRect(int x, int y, int w, int h, byte r, byte g, byte b)
        {
            for (int j = 0; j < h; j++)
            {
                for (int i = 0; i < w; i++)
                {
                    SetPixel(x + i, y + j, r, g, b);
                }
            }
        }

利用例
MainWindow.xaml.cs

using System.Windows;

using Maywork.WPF.Helpers;

namespace WpfSample01;

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        
        var buff = ImageBufferHelper.Create(256, 256, 1); // カラーの場合、第3引数を1→3

        buff.FillRect(32, 32, 192, 192, 255);
        buff.DrawRect(64, 64, 128, 128, 0);

        Image1.Source = buff.ToBitmapSource();
    }
}

MainWindow.xaml

    <Grid>
        <Image x:Name="Image1" />
    </Grid>

ImageConverter.cs


実行例

グレースケール

カラー

コメント