谁能告诉我如何移动图片框中的元素?
看起来是这样的:
例如,我有4 4 1 3元素(第一行)。如何切换元素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);
}
}
最佳答案
我将创建一个方法来绘制接受二维数组的图片框网格,以存储坐标和任何红色正方形的值。
为了更改数字(或切换两个数字),我只需修改数组并重新绘制图片框
编辑:一些更简单的方法吗?
如果您只是想玩转并创建一个简单的游戏,我想创建所需数量的PictureBox
会比较容易,将BackgroundColor
红色和Tag
属性设置为其数字(3、4) 4、1等)。
然后将它们彼此靠近以创建并填充TableLayoutPanel
,然后在每个Tag
的角落绘制PictureBox
属性。
或者,您也可以使用带有Label
和特定大小的Autosize = False
,只需在其中写入数字,就更容易了。
之后,您可以轻松地处理每个pictureBox / Label上的click event
,从Tag / Text属性获取值,并可能在单击时更改背景色。在第2次点击上,您在图片框/标签中重新绘制了数字,并将颜色重置为红色,给人以为它们已被切换
关于c# - 运动图片框元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20789387/