VB.NET 图片框之间的碰撞

2023-12-12

我正在尝试制作一个简单的游戏,我需要知道 picturebox1(我的角色)是否与其他 picturebox(墙壁)发生碰撞。

我已经弄清楚了如何做到这一点,但它仅适用于我的角色和其他 1 个图片框,例如:

If picturebox1.bounds.intersectWith(picturebox2.bounds) then
   collision = true
end if

我尝试做其他类似的事情:

For Each PictureBox In Me.Controls
  If PictureBox1.Bounds.IntersectsWith(PictureBox.Bounds) Then
     collision = True
  Else : collision = False
  End If
Next

但布尔碰撞将始终为真,因为 picturebox1(角色)始终与自身相交。

所以我将图片框更改为面板,代码如下所示:

For Each PictureBox In Me.Controls
  If Panel1.Bounds.IntersectsWith(PictureBox.Bounds) Then
     collision = True
  Else : collision = False
  End If
Next

但它仅适用于 1 个图片框,不适用于表单中的所有图片框。 我不明白为什么... 如果有人知道如何在每个函数中添加例外,这样我就可以保留我的 picturebox1

也许是这样的

For each picturebox(except(picturebox1)) in me.controls

因为我已经搜索过但没有找到任何东西......

任何帮助是极大的赞赏 :) 谢谢!


一种方法是:

For Each PictureBox In Me.Controls
  If PictureBox IsNot PictureBox1 AndAlso PictureBox1.Bounds.IntersectsWith(PictureBox.Bounds) Then
     collision = True
     Exit For 'Exit when at least one collision found 
  Else : collision = False
  End If
Next

这会将碰撞设置为False如果 PictureBox 确实是 PictureBox1。但请注意,您正在覆盖每个循环中的碰撞状态,这不是您真正想要的。当发现一次冲突时,您应该退出 for 循环(请参阅我的代码)。您还可以像这样更改您的代码:

collision = False
For Each PictureBox In Me.Controls
  If PictureBox IsNot PictureBox1 AndAlso PictureBox1.Bounds.IntersectsWith(PictureBox.Bounds) Then
     collision = True
     Exit For
  End If
Next
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VB.NET 图片框之间的碰撞 的相关文章

  • IIS7.5 WCF 服务 - HTTP 错误 401.3(即使在添加 IIS_IUSRS 后)

    我们有使用 NT Authority Network Service 的网站 Response Write WindowsIdentity GetCurrent Name 该网站使用托管在 IIS 7 5 中的 WCF 服务 当我们浏览服务
  • BouncyCastle,生成 RSA 密钥对需要多长时间?

    我正在使用 Bouncy Castle c vb net 版本 并生成一个 4096 字节的 RSA 密钥对 以便通过以下例程在我的证书中使用 Public Shared Function GenerateRSAKeypair keylen
  • 在word中添加超链接,使用vb.net

    我目前正在尝试通过 VB 程序在 word 中添加一个指向 web url 的超链接 我正在跌跌撞撞地尝试找到正确的语法以及完成此任务所需的内容 因为我收到了很多无用的 VBA 示例 而这根本不是我需要的 我的代码如下所示 sPara2 o
  • VB.NET“With”声明——拥抱还是避免?

    在工作中 我经常从事一些项目 其中某些对象的许多属性必须在其构建过程中或在其生命周期的早期进行设置 为了方便和可读性 我经常使用With语句来设置这些属性 我发现 With Me Elements PropertyA True Proper
  • 在本地安全存储用于 Web 服务的密码

    我有一个应用程序 通过发送用户名和密码来对第三方 Web 服务进行身份验证 目前 我每次启动应用程序时都会在 winform 上输入密码 但我需要它自动登录 我想比更安全地存储用户名 密码 Dim username as String us
  • 模式弹出窗口上的按钮单击事件,在网格视图内未触发

    我遇到以下问题 场景 我有一个 asp 网格 其中有一些绑定到数据的列 最后一列已转换为模板字段 在这个模板字段中有一个按钮 上面附加了一个模式弹出扩展器 该字段中隐藏着一个模式弹出窗口 此模式弹出窗口用于添加新帐户 它包含 2 个文本框
  • 如何判断一个类是否被某个特定属性修饰

    我试图确定接口是否用特定属性装饰 例如我有以下界面
  • 检查有效的 IMEI

    有人知道如何检查有效的 IMEI 吗 我找到了一个可以检查此页面的功能 http www dotnetfunda com articles article597 imeivalidator in vbnet aspx http www do
  • Visual Studio 多个启动项目之间存在延迟?

    如何在解决方案中的启动项目之间添加一些延迟 我希望客户端项目在启动 WindowsService 后 2 3 秒后启动 为什么我需要这个 WindowsService运行socket服务器 Client运行socket来连接服务器 Wind
  • 如何在 Microsoft 报告中显示字节数组中的图像

    我使用报表文件和 ReportViewer 控件来显示在运行时从对象动态加载数据的报表 我需要显示一个以字节数组形式存储在对象中的图像 PictureBox 的值当前设置为 First Fields ImageData Value dtst
  • 比较已编译的 .NET 程序集?

    有没有什么好的程序可以与编译 NET 程序集进行比较 例如 我有 HelloWorld dll 1 0 0 0 和 HelloWorld dll 2 0 0 0 我想比较差异 我该怎么做 我知道我可以使用 NET Reflector 并使用
  • SELECT 语句会受到 SQL 注入攻击吗?

    实际上有2个问题 我知道我必须尽可能多地使用存储过程 但我想知道以下内容 A 我可以从 SELECT 语句 例如 Select from MyTable 获得 SQL 注入攻击吗 B 另外 当我在 ASP NET 中使用 SQLDataSo
  • VB.NET 中的模块变量何时实例化?

    我想知道在程序的生命周期中 模块中的变量将被初始化 如下例所示 Module Helper Friend m Settings As New UserSettings Sub Foo End Sub Sub Bar End Sub End
  • 如何在vb.net中实现事务方式?

    我使用 VB net 200 开发一个连接到 MS Access 数据库的应用程序 我使用 TableAdapter 和 Dataset 连接到 Access DB 文件 我需要实现一个简单的事务方法 提交 回滚 来保存到数据库 有没有一种
  • Vb中读取USB存储设备的序列号

    是否可以使用VB读取USB驱动器的序列号 这将为您提供 net 中驱动器的信息 包括 USB 设备 只需导入这些 导入脚本 导入系统 IO Private Class USBsn Private Sub Button1 Click ByVa
  • WithEvents(句柄)与 AddHandler 之间的区别

    我搜索了关键字使用的差异Handles http msdn microsoft com en us library 6k46st1y aspx代替添加处理程序 http msdn microsoft com en us library 7t
  • VB.NET 类或模块的用途是什么?

    这里是新手酱 所以 我试图找到答案 但找不到 拥有类或模块的目的是什么 我读到的所有内容都试图告诉我它是什么 但不是它的用途 为什么我需要制作一个 我读到的所有内容似乎都对阅读教程的人做出了假设 就好像我知道很多一样 模块实际上与仅包含共享
  • 级联通用接口

    我正在构建自己的框架来包装通过暴露的接口Microsoft Office Interop 我将 Office 范围的功能包装到第一组接口中 然后由第二组功能继承 这些功能依赖于应用程序 这是一个简化版本 Region Office Wrap
  • 在 VB.NET 中 a = b = 5 - 不可能吗?

    VB NET 中可以这样做吗a b 5 我知道 也是比较运算符 我的意思是做not结果 例如 如果 b 2 a false b 2 然而 在下面的情况下该怎么做呢 不方便在我的代码中引起了这个问题 一些对象a b z由方法中的 ref 传递
  • 确定最接近的已知颜色

    我允许我的应用程序的用户选择自定义颜色 并希望有一种方法来显示每种颜色的友好名称 而不是显示十六进制代码的文本表示形式 我如何找到最近的System Drawing Color对于给定的十六进制代码 希望这对某人有帮助 Public Fun

随机推荐