0

我正在使用 C# 在 Visual Studio 2010 中编写一个弹跳徽标屏幕保护程序。在今天之前我从未用 C# 编写过,所以我为任何高级的无知道歉。我正在使用 PictureBox 将图像导入表单。有没有办法找到 PictureBox 的边界,以便我可以将其与屏幕边界进行比较(使用 screen.Bounds 作为屏幕边界)?就像我说的,我以前从未使用过 C# 编程,所以我不确定您还需要哪些其他细节(如果有的话)。请让我知道,我会尽我所能。谢谢你。

编辑:我的反弹方法是用公共部分类 ScreensaverForm 编写的。框架在静态类程序中。我在反弹方法中的边界检查是 if(picturebox.Bounds.Bottom == this.Bounds.Bottom)。这似乎检查边界,但边界不是框架的边界。如何调用框架属性?

4

3 回答 3

1

除非我错过了什么。

将 Screenbounds 获取为Rectangle.

screenrectangle.Contains(new Rectangle(MyPictureBox.Location, MyPictureBox.Size))

如果这一切都在屏幕上,会给你真实的。

于 2012-03-02T17:57:50.513 回答
0

除了 Tony 的出色建议,我想谈谈如何处理碰撞:

有四个边界,所以要检查四种情况。

可以同时进行水平和垂直反弹!因此单独跟踪水平和垂直速度,水平反弹只会影响水平运动。

此外,如果您的对象一次移动超过一个像素,您可能看不到准确的命中。(就像你的盒子的x坐标直接从1移动到-1而不是0。所以你应该测试边界是否在边界上或超过边界,而不仅仅是测试。

仅在向特定边界移动时检查碰撞也是一种很好的做法。如果你不这样做,你的窗口可能会卡住,因为它在每次移动后都会与相同的边缘发生碰撞。

于 2012-03-02T19:55:43.023 回答
0

您的图片框将以一种形式存在。图片框有一个边界,它为您提供相对于包含它的表单的顶部、左侧、右侧和底部值。从那里,假设左上角为 0,0,您可以使用 Forms 的宽度和高度属性轻松计算图片框是否完全在表单内。当您移动图片框时,请检查以确保您将要执行的移动将图片框保留在表单中。

于 2012-03-02T17:49:47.180 回答