【问题标题】:moving picturebox elements移动画框元素
【发布时间】:2013-12-26 18:27:40
【问题描述】:

谁能告诉我如何移动图片框中的元素?

它是这样的:

例如,我有元素 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);
            }

        }

【问题讨论】:

  • 我认为你至少需要一个简单的对象来保存X-axisY-axis 和每个正方形的数值并选择一些适当的数据结构,也许数组会做到这一点,持有每个元素的位置。然后你可以使用另一个数据结构,我认为队列会做到,你可以保持点击(每两次点击意味着改变两个方块,然后选择清空队列或数据结构)。
  • 好吧,我的想法是每次我更改任何内容时都必须创建一个新数组,如果这是您的想法并且我理解正确的话。但我仍然不知道该怎么做。我想我会做点别的。

标签: c# winforms picturebox


【解决方案1】:

我将创建一个方法来绘制接受二维数组的图片框网格,以存储任何红色方块的坐标和值。 为了更改一个数字(或切换两个数字),我只需修改数组并重新绘制图片框

编辑:更简单的方法?

如果您只是想玩玩并创建一个简单的游戏,我认为创建尽可能多的 PictureBox 会更容易,BackgroundColor 红色和 Tag 属性设置为它的数字(3 , 4, 4, 1 等)。

然后将它们彼此靠近创建并填充TableLayoutPanel,然后在其角落绘制每个PictureBoxTag 属性。

或者,您也可以使用LabelAutosize = False 和特定大小,然后在此处写下数字,这更容易。

之后,您可以轻松处理每个图片框/标签上的click event,从标签/文本属性中获取值,并可能在单击时更改背景颜色。在第 2 次单击时,您重绘了两个图片框/标签中的数字并将颜色重置为红色,给人的印象是它们已被切换

【讨论】:

  • 嗯,但我需要使用鼠标来移动它们。例如,如果我单击 1,然后单击 3,它们将切换位置。
  • 它可能比你想象的更复杂......没有神奇的方法可以做到这一点。开始“手动”操作,无需点击。只需在 2 个不同的文本框中写下要切换的坐标,然后按一个按钮,看看它是否有效。至少这是我要开始的。然后你可以继续检测鼠标点击,获取鼠标位置下的值等
  • 好的,我试一试。我会在这里发布它是否有效。
  • 给了它一些想法,我真的不知道如何在图片框中选择特定区域。谁能告诉我怎么做?
  • 你是对的,这并不容易,检查编辑的答案。希望对你有帮助,祝你游戏好运
猜你喜欢
  • 1970-01-01
  • 2018-04-22
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多