2011-07-18 21 views
1

Windowsフォームを使用してチェスボードを作成する最適な方法は何ですか?Windowsフォームを使用してチェスボードを作成する

私はまだwinformsでグラフィックスをコーディングするのは初めてですが、どのコントロールを使用するのかはわかりません。

ユーザーは、ボードにチェスのピースを置くことができるはずです。 チェスダイアグラムエディタを作成しようとしています。 http://www.chessbin.com/page/Chess-Game-Starer-Kit.aspx(代替プロジェクト:http://www.codeproject.com/KB/game/SrcChess.aspx

今日では多くのことをあなたにサンプルを提供します(C#の場合)のスターターキットを持っている

答えて

4

多くの方法があります。

(これは、パネルコントロールの2Dグリッドを使用してチェスボードを作成します)拡張するには、各パネルの背景画像を変更してチェスの部分を表示することができます。定義するのはあなた次第です)。

// class member array of Panels to track chessboard tiles 
    private Panel[,] _chessBoardPanels; 

    // event handler of Form Load... init things here 
    private void Form_Load(object sender, EventArgs e) 
    { 
     const int tileSize = 40; 
     const int gridSize = 12; 
     var clr1 = Color.DarkGray; 
     var clr2 = Color.White; 

     // initialize the "chess board" 
     _chessBoardPanels = new Panel[gridSize, gridSize]; 

     // double for loop to handle all rows and columns 
     for (var n = 0; n < gridSize; n++) 
     { 
      for (var m = 0; m < gridSize; m++) 
      { 
       // create new Panel control which will be one 
       // chess board tile 
       var newPanel = new Panel 
       { 
        Size = new Size(tileSize, tileSize), 
        Location = new Point(tileSize * n, tileSize * m) 
       }; 

       // add to Form's Controls so that they show up 
       Controls.Add(newPanel); 

       // add to our 2d array of panels for future use 
       _chessBoardPanels[n, m] = newPanel; 

       // color the backgrounds 
       if (n % 2 == 0) 
        newPanel.BackColor = m % 2 != 0 ? clr1 : clr2; 
       else 
        newPanel.BackColor = m % 2 != 0 ? clr2 : clr1; 
      } 
     } 
    } 
+0

これは私が必要としていたものです。ありがとう。上記のコードを使用してチェスボードを表示し、PanelプロパティのBackgroundImageとBackgroundImageLayoutを使用してパネルにチェスを表示することを考えています。 – user850010

2

最良の方法は、「チェススターターキット」を使用することですありがとう始める。

0

私はあなたがこのチェスボードで何をしたいのか分かりませんが、作品の後ろに表示するバックグラウンドだけの場合、あなたのベストショットは背景イメージを設定することです。

1

コントロールのOnPaintイベントハンドラでは、暗黙のうちに式(floor(x * 8) mod 2) = (floor(y * 8) mod 2)を使用してチェスボードパターンを描画するか、Graphics.FillRectangleで四角形を描画することから始めます。 2番目のステップは、Graphics.DrawImageを使用してピースを上に描画することです。

+0

コメントで更新されました。 –

関連する問題