使用Windows窗體創建國際象棋棋盤的最佳方式是什麼?使用Windows窗體創建國際象棋棋盤
我對winforms中的圖形編碼還是一個新的東西,我不確定哪個控件可以用於那個?
用戶應該能夠將棋子放入棋盤。 我想寫象棋圖編輯器。
謝謝
使用Windows窗體創建國際象棋棋盤的最佳方式是什麼?使用Windows窗體創建國際象棋棋盤
我對winforms中的圖形編碼還是一個新的東西,我不確定哪個控件可以用於那個?
用戶應該能夠將棋子放入棋盤。 我想寫象棋圖編輯器。
謝謝
有很多方法。這裏有一個讓你開始使用一些WinForms概念的方法:
(它使用一個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;
}
}
}
最好的辦法是使用一個「國際象棋入門套件」:http://www.chessbin.com/page/Chess-Game-Starer-Kit.aspx(備選項目:http://www.codeproject.com/KB/game/SrcChess.aspx)
時下許多東西入門套件(對於C#),它爲您提供了一個樣本開始。
我不知道你想用這個國際象棋棋盤做什麼,但如果它只是一個背景後顯示,你最好的辦法是設置一個背景圖像。
在控件OnPaint事件處理程序中,您首先通過使用公式(floor(x * 8) mod 2) = (floor(y * 8) mod 2)隱式繪製棋盤圖案,或者僅使用Graphics.FillRectangle繪製正方形來繪製棋盤圖案。第二步是用Graphics.DrawImage繪製最上面的部分。
在評論中更新。 –
這正是我所需要的。謝謝。我將使用上面的代碼來顯示國際象棋棋盤,然後我正在考慮使用面板屬性BackgroundImage和BackgroundImageLayout在面板上顯示國際象棋棋子。 – user850010