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 图片框之间的碰撞 的相关文章

  • 如何在 vb.net 中更改 DateTimePicker 的日期格式

    如何更改 vb net 中 DateTimePicker 的日期格式 以便日期以 dd mm 1990 格式显示 没有任何时间值 我尝试将格式更改为 短 虽然这提供了我需要的日期格式 但它不会删除时间 您需要将 DateTimePicker
  • 如何在 VB.NET 中实现包含结构体参数的 C# 委托?

    给定 C 中的以下委托定义 struct Dummy delegate int ReceiveDummy in Dummy dummy 如何将 VB Net 子程序分配给 ReceiveDummy 类型 以下两个函数定义都会失败 并出现错误
  • 更改文本框中文本的前景色和背景色

    我正在使用 VB NET 制作 C 代码编辑器应用程序 我想在用户键入关键字时更改关键字的颜色 另外 我正在寻找一种方法来突出显示某些代码行 有没有办法更改文本框或富文本框中一段文本的前景色和背景色 我真的不知道你想做什么 所以这里有一些选
  • asp.net vb 用户控件在调用页面上引发事件

    我正在尝试了解用户控件 我创建了一个具有文本框和按钮的用户控件 我想要做的是 当我单击用户控件中的按钮时 在 aspx 页面中填充标签 我知道我可以在页面上有一个按钮 使用用户控件上的一些属性来获取该信息 但我想知道如何使用用户控件的按钮来
  • System.IO.Compression 和 ZipFile - 提取并覆盖

    我使用标准 VB NET 库来提取和压缩文件 它也可以工作 但是当我必须提取并且文件已经存在时 问题就出现了 我使用的代码 Imports Imports System IO Compression 崩溃时我调用的方法 ZipFile Ex
  • 使用 VB.Net 的 GhostText

    大家好 我尝试创建一个幽灵文字在文本框上使用标签 我使用的是VB Net2005 我用这段代码完成了这个 Public Class frmDataEntry Private Sub PhantomTextLastName If txtLas
  • 将 MIME 编码的附件发布到 Ariba Supply Network 时出现问题

    我在尝试使用 VB NET 和 WebRequest 对象发布一些 cXML 文本和附件时遇到问题 我相信我正在格式化我希望正确发布的数据文本 因为它与 Ariba 提供的示例相匹配 我不确定的是我是否正确使用 WebRequest 对象来
  • 如何在VB.NET中画一条线

    我正在尝试用 VB NET 画一条简单的线 我的代码如下 但是当我运行代码时 只显示表单 没有线 我在这里做错了什么 Public Class Form1 Dim pen As System Drawing Graphics Private
  • 在VB.NET中获取文件修改日期

    我的文件夹中有许多文件 我需要获取最后修改日期 所以我用了 FDate IO File GetLastWriteTime FName 对于某些文件 它工作正常 但对于其他文件 我得到的日期为 1 1 1601 但是当我在 Windows 资
  • 为什么 Dictionary 上的这个 Linq 查询不作为数据源工作

    我在VB中有以下内容 Dim sources From source In importSources Select New With Type source Key Source source Value Name dgridSource
  • 我刚刚在 Visual Basic 中运行的 COM 对象的 CLSID 是什么

    我需要知道我刚刚运行的 COM 对象的 CLSIDCreateObject xxx xxx 我怎么才能得到它 蒂亚 拉法尔 我认为您无法直接从 VB 本身获取该信息 例如 作为调用的副作用或次要结果 CreateObject 但你可以阅读注
  • VB SQL 语句未选择正确的行

    我试图使用 SELECT 语句在我的数据库中 选择 一个人 但它没有选择正确的人 我也不确定为什么 我正在使用访问数据库 数据库连接代码 Imports System Data OleDb Module Database Connectio
  • 父窗体中的居中消息框[重复]

    这个问题在这里已经有答案了 有没有一种简单的方法可以在 net 2 0中将MessageBox居中于父窗体中 我在 C 中确实需要这个并发现中心消息框 C http bytes com topic c sharp answers 26712
  • 由于继承抽象类而禁用设计器?

    我有一个项目的解决方案 那个项目中有 40 或 50 种形式 我制作了 4 个基本形式 所有其他形式都可以继承 所有 4 个基本表单都继承 System Windows Forms Form 几乎 90 的形式继承了前 2 个基本形式之一
  • WPF DataGrid 验证/绑定模式错误

    我创建了一个非常简单的新项目 仅测试 Microsoft WPF DataGrid 行为 不涉及其他 我只使用标准的 DataGrid
  • Outlook 加载项,无法读取未定义的属性“BeginRequestEventArgs”

    我使用 Visual Studio 开发了 Outlook 插件 我的插件有一个按钮 用于填充会议邀请正文中的详细信息并添加所需的与会者 这在 99 的情况下都有效 但是 时不时地它会给我下面的 JavaScript 错误 Uncaught
  • 有没有更简单的方法来处理复选框?

    在 vb net 中 我有一个包含一组四个复选框的表单 每个复选框都表示 选中时 用户想要向其订单添加特殊指令 代码如下所示 If SpecialInstruction1CheckBox Checked Then AddSpecialIns
  • VB.NET 中的 TextChanged 事件

    我有两个基本文本框 比方说 A 和 B 我希望在一个文本框中输入内容以清除另一个文本框中的任何输入 例如 在 A 中键入 123 现在在 B 中键入 456 B 应包含 456 A 应为空 但是 我在 B 中收到 56 而 A 为空 似乎
  • SQL存储过程执行时间差异

    我在 win form 应用程序中遇到奇怪的问题 我正在调用一个存储过程 并且执行大约需要 6 秒 此存储过程接受多个参数 包括一个输出参数 从应用程序级别我使用 Dim dt1 DateTime Now cmd ExecuteNonQue
  • VB.NET vNext 中的迭代器以及 C# 中迭代​​器的限制

    我刚刚在上看到异步CTP网站 http msdn microsoft com en us vstudio async aspxVB NET 的下一个版本将有迭代器 我猜它们包含了迭代器 因为重写过程与新的迭代器所使用的过程类似 async

随机推荐