使用 Windows 窗体创建棋盘 [英] Creating a Chess Board using Windows Forms
问题描述
使用 Windows 窗体创建棋盘的最佳方法是什么?
What is the best way to create chess board using Windows Forms?
我对 winforms 中的图形编码还是个新手,我不确定要使用哪个控件?
I am still new to graphics coding in winforms and I am not sure, which control to use for that?
用户应该能够将棋子放入棋盘中.我正在尝试编写国际象棋图编辑器.
The user should be able to put chess pieces into the board. I am trying to write Chess Diagram Editor.
谢谢
推荐答案
有很多方法.这是一个替代方案,可让您开始了解一些 WinForms 概念:
There are a lot of ways. Here's an alternative that gets you started with some WinForms concepts:
(它使用面板控件的 2D 网格来创建棋盘.要扩展它,您可以更改每个面板的背景图片以显示棋子.游戏玩法由您来定义.)
(It uses a 2D grid of Panel controls to create a chessboard. To extend it you might change the background picture of each Panel to show chess pieces. The game play is up to you to define.)
// 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;
}
}
}
这篇关于使用 Windows 窗体创建棋盘的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!