【问题标题】:Array of Picture boxes图片框数组
【发布时间】:2017-05-03 15:27:29
【问题描述】:

所以我正在做一个棋盘游戏,我想到的唯一想法就是用图片框制作棋盘。我的棋盘是每 32 个方格 26 个,这意味着我需要很多图片框才能做到这一点。

我想到了两种方法,但我不确定它们是否有效。

一种方法是将 832 个图片框实际放在我的表单上,然后遍历它们并填充数组,但这会使表单变得非常混乱和滞后。我在这上面手动写了一些代码,不知道它是否可以工作,但它只是为了有个想法:

    For i = 831 To 0 Step -1
        PictureBox.i
        For e = arrMap(0, 0) To arrMap(25, 31)
            arrMap(a, e) = PictureBox.i
            If e = 32 Then
                e = 0
                a = a + 1
            End If
        Next
    Next

我想到的另一种方法是将一个图片框放在正确的位置,然后在它旁边创建另一个并将其放入下一个索引位置的数组中,当一行完成时,我会再放另一个一个在起点之上并继续这样,直到所有图片框都被创建并在数组中。

我认为我需要数组,因为我需要比较游戏棋子上的位置和数组,我认为这是最好的方法。

有没有更好的方法来制作游戏的棋盘,或者如果这可行,有什么想法吗?

PS。我做的是VB

【问题讨论】:

  • 似乎显而易见的选择是使用TableLayoutPanel 并在每个单元格中添加PictureBox。不确定是否会有性能问题,但这是我会尝试的第一件事。
  • PictureBox 的存在只是为了方便点击。但可以肯定的是,它使简单的 Graphics.DrawImage() 调用成本高出 3 个数量级。 Label 是另一种过度,调用 TextRenderer.DrawText() 的缓慢方式。所以不要使用它。
  • 我的游戏将基于指向一个图片框的一个角色,然后将其移动到另一个只需指向并单击的角色

标签: arrays vb.net picturebox


【解决方案1】:

对于每个状态使用分隔的Pictue Box 不是一个好主意,

我建议使用Panel与游戏板的高度和宽度,并将背景图像设置为板(矩阵图)

将面板分离为矩阵,通过鼠标点击位置查找点击的矩阵索引位置

例如80到90的板子。

如果每个矩阵索引是 5*5 像素图像,则 80*5 和 90*5 是面板的高度和宽度

在 Panel 鼠标单击时查找单击位置 >> 例如 位置 (21,14) => [21/5] = 4 和 [14/5] = 2 因此选择矩阵 [4,2]

现在使用当前背景图像并绘制新图像或用新图像更改图像

如果只有一个运动图像,你可以使用一个图片框并通过此算法移动图片框

使用 draw graphics 命令而不是 new Pictue Box 将背景图像更改为具有新状态的新图像

您可以将矩阵数据和游戏数据保存在自定义类中,例如game data

顺便说一句,在这种类型的游戏中使用图像框并不是一个好主意:)

【讨论】:

  • 我会尝试实现这一点,我会返回结果:) 谢谢
猜你喜欢
  • 1970-01-01
  • 2023-04-05
  • 2014-12-11
  • 1970-01-01
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
相关资源
最近更新 更多