谁能告诉我如何移动picturebox中的元素?
它看起来是这样的:

例如,我有元素4413(第一行)。如何切换元素1和元素3?
代码如下:
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
if (numbers == null)
{
return;
}
int xMaxCoordinate = numbers.GetLength(0);
int yMaxCoordinate = numbers.GetLength(1);
int xVieniba = pictureBox1.Width / xMaxCoordinate;
int yVieniba = pictureBox1.Height / yMaxCoordinate;
Pen _pen = new Pen(Color.White, 1F);
Font fonts = new Font("Times New Roman", 10);
Brush brush = new SolidBrush(Color.Black);
for (int i = 0; i < numbers.GetLength(0); i++)
{
for (int j = 0; j < numbers.GetLength(1); j++)
{
e.Graphics.DrawString(numbers[i, j].ToString(), fonts, brush, i * xVieniba, j * yVieniba);
}
}
for (int i = yVieniba; i < pictureBox1.Height; i += yVieniba)
{
e.Graphics.DrawLine(_pen, 0, i, pictureBox1.Width, i);
}
for (int i = xVieniba; i < pictureBox1.Width; i += xVieniba)
{
e.Graphics.DrawLine(_pen, i, 0, i, pictureBox1.Height);
}
}发布于 2013-12-27 02:35:50
我将创建一个方法来绘制接受二维数组的picturebox网格,以存储任何红色正方形的坐标和值。为了更改一个数字(或切换两个数字),我只需修改数组并重新绘制picturebox
编辑:更简单的方法吗?
如果你只是想玩一玩并创建一个简单的游戏,我认为用BackgroundColor红色和一个Tag属性设置它的数字(3,4,4,1等等)来创建你需要的任意多的PictureBox会更容易。
然后将它们放在一起,创建并填充一个TableLayoutPanel,然后在角落中绘制每个PictureBox的Tag属性。
或者,你也可以使用带有Autosize = False和特定大小的Label,只需在那里写下数字,这就更简单了。
之后,您可以轻松地处理每个图片框/标签上的click event,从标签/文本属性获取值,并可能在单击时更改背景颜色。在第2次单击时,您可以重新绘制两个图片框/标签中的数字,并将颜色重置为红色,这会给人一种它们被交换的印象
https://stackoverflow.com/questions/20789387
复制相似问题