C#で9×9のマス目を描く

コンピュータ

テストデータで縦横に一定間間隔で目印がある画像データが欲しくて作成してみました。

プロジェクトの作成

mkdir プロジェクト名
cd  プロジェクト名
dotnet new winforms -f net6.0

ソースコード

namespace Goban;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        PictureBox picbox = new()
        {
            Dock = DockStyle.Fill,
        };
        this.Controls.Add(picbox);
        this.Load += (s, e) =>
        {
            using Font font = new Font("MS UI Gothic", 12);
            const int cellWidth = 100;
            const int cellHeight = 100;
            Bitmap bmp = new Bitmap(cellWidth * (9 + 2), cellHeight * (9 + 2));
            using(Graphics g = Graphics.FromImage(bmp)) {
                g.Clear(Color.White);

                string str = string.Format("{0}x{1}", bmp.Width, bmp.Height);
                g.DrawString(str, font, Brushes.Gray, 0, 0);

                for(int y = cellHeight; y < (cellHeight * (9 + 2)); y += cellHeight) {
                    g.DrawLine(Pens.Black, cellWidth, y, cellWidth * (9+1), y);
                }
                for(int x = cellWidth; x < (cellWidth * (9 + 2)); x += cellWidth) {
                    g.DrawLine(Pens.Black, x, cellHeight, x, cellHeight * (9+1));
                }

                for(int y = cellHeight; y < (cellHeight * (9 + 1)); y += cellHeight) {
                    for(int x = cellWidth; x < (cellWidth * (9 + 1)); x += cellWidth) {
                        str = string.Format("{0}_{1}", x/cellWidth, y/cellHeight);
                        g.DrawString(str, font, Brushes.Gray, x, y);
                    }
                }

            }
            
            picbox.Image = bmp;
            this.ClientSize = bmp.Size;
        };
    }
}

実行

dotnet run

コメント