删除矩形类

时间:2010-11-27 14:06:32

标签: c#

我正在用c#创建一个突破游戏,我使用布尔值来告诉程序是否要绘制砖块,我使用矩形类来放置绘制的矩形以便能够判断球是否有打砖头

这是我到目前为止使用的代码:

Rectangle brick4 = new Rectangle((490), (50), (50), (20));
bool hitBrick4 = brick4.Contains(x, y);
if (hitBrick4)
{
    brick4 = new Rectangle(0, 0, 0, 0);
    brick4draw = false;
    yChange = -yChange;
    bricksdestroyed = bricksdestroyed + 1;
   lblBricksDestroyed.Text = "Bricks Hit: " + bricksdestroyed;
}

我试图通过将砖块设置为零来删除砖块之后删除矩形类,但是矩形仍然存在且仍然可以被击中,触发命中砖代码。

任何建议,对不起,如果我不是很清楚。

3 个答案:

答案 0 :(得分:1)

这根本不会很好地扩展,因为你似乎在为每个砖块声明一个新变量。

考虑将Rectangle s放入某种多样的List中。然后迭代该列表以查看砖块是否被击中。如果有,请将其从列表中删除,然后重新绘制。

答案 1 :(得分:0)

无需创建新的Rectangle,已有静态成员:

if (hitBrick4 && brick4 != Rectangle.Empty)
{
    brick4  = Rectangle.Empty;
    ...
}

答案 2 :(得分:0)

OMG,我一直在寻找类似的东西,但我发现的解决方案让我很惊讶!你可以使用VisualBasic PowerPacks,它包含在我的Visual Studio 2008版本中

这是一个示例代码,它将在TextBox上绘制一个矩形,即我给它一个自定义边框 [代码]

Dim x = TextBox1.Location.X
Dim y = TextBox1.Location.Y
Dim width = TextBox1.Width
Dim height = TextBox1.Height
Dim ShapeContainer1 As New Microsoft.VisualBasic.PowerPacks.ShapeContainer
Me.Controls.Add(ShapeContainer1)
Dim RectangleShape1 As New Microsoft.VisualBasic.PowerPacks.RectangleShape
ShapeContainer1.Shapes.AddRange(New Microsoft.VisualBasic.PowerPacks.Shape() {RectangleShape1})
RectangleShape1.Location = New System.Drawing.Point(x - 1, y - 1)
RectangleShape1.Size = New System.Drawing.Size(width + 1, height + 1)
RectangleShape1.BorderColor = Color.MistyRose
ShapeContainer1.Refresh()

代码是自我描述的,但如果您有任何问题,请留言...... 是的,如果你想删除矩形,只需处理控件(整个Rectangle或ShapeContainer),不要画画,不要麻烦!