将棋盤をTableLayoutPanelで作成する

TableLayoutPanelを使うと、マスのなかにオブジェクトが収まるので、アプリケーションが作りやすくなります
ボードゲームで有効に活用しましょう

実行結果

2X2のサンプルになります
プロパティで簡単に9X9にもできます
ボードゲームのサイズに応じて変更しましょう
枠は、白色ならプロパティの設定で可能ですが今回は将棋盤なので、コードで黒色の枠を実現しています

デザインとプロパティ

今回のサンプルの変更点になります
背景に木目調の板のイラストなどを使いたい時はイメージをセットするだけで可能です

イベント

枠を表示するためにセルの描画イベントを使います
イベントハンドラは次のコードのシグネチャーを選択します

コード

枠を表示するのみです
ゲームのコードは含まれていません

namespace PanelBoaderSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Rectangle r = e.CellBounds;

            // 左端のセルの場合
            if (e.Column == tableLayoutPanel1.ColumnCount - 1)
                r.Width--;

            //下端のセルの場合
            if (e.Row == tableLayoutPanel1.RowCount - 1)
                r.Height--;

            Pen pen = new Pen(Brushes.Black, 3);
            g.DrawRectangle(pen, r);

        }
    }
}

このコードは、C#でWindowsフォームアプリケーションを開発する際に使用するTableLayoutPanelコントロールの、特定のセルの枠線を太くする方法を示しています。

具体的には、TableLayoutPanelのCellPaintイベントを処理するためのイベントハンドラメソッドが定義されています。このメソッドは、テーブルレイアウトパネルのセルが描画されるたびに呼び出され、指定されたセルの境界線を太く描画するための処理を行います。

このメソッドは、イベントの引数として渡されるTableLayoutCellPaintEventArgsオブジェクトを使用して、セルの境界線の描画に必要な情報を取得します。例えば、e.Columnおよびe.Rowプロパティを使用して、現在のセルがどの列および行に属するかを確認します。また、e.CellBoundsプロパティを使用して、現在のセルの境界線の位置とサイズを取得します。

次に、描画に使用するGraphicsオブジェクトを取得し、描画するために必要な境界線を作成します。例えば、左端のセルの場合は、境界線の右側を1ピクセル短くすることで、枠線が太く見えるようにします。同様に、下端のセルの場合は、境界線の上側を1ピクセル短くすることで、枠線が太く見えるようにします。

最後に、Penオブジェクトを作成し、その幅を3に設定して、境界線を描画します。この例では、すべてのセルに対して同じペンを使用しますが、必要に応じて異なる色や幅を持つペンを使用することもできます。

参考

駒をおくサンプル