繁体   English   中英

C#中的二维数组矩形

[英]Two-Dimensional Array Rectangle in C#

我需要使用C#中的二维数组创建一个新的矩形。

我创建了一个名为brick_fw的映像,并将其导入到要创建的游戏的IDE中。

这是我的代码(在它自己的名为Brick的类中):

brickLength = 60;
brickHeight = 20;
int[,] brickLocation = { { 0, 0 }, { 62, 0 }, { 123, 0 }, { 184, 0 }, { 245, 0 }, { 306, 0 }, { 367, 0 } };
bool[] brickLive = { true, true, true, true, true, true, true };

brickImage = Breakout.Properties.Resources.brick_fw;
brickRec = new Rectangle(x, y, brickLength, brickHeight);

我这里的问题是; brickRec只能使用x和y的整数值,并且只接受这种表示新矩形的方式(这意味着如果我从括号中删除x和y并用brickLocation替换,则编译器会brickLocation )。

就目前而言,编译器只会在程序中绘制单个积木,因为它没有考虑二维数组。 有没有办法在Rectangle函数中表示这个brickLocation

编辑:

public Brick()
{
    brickLength = 60;
    brickHeight = 20;
    int[,] brickLocation = { { 0, 0 }, { 62, 0 }, { 123, 0 }, { 184, 0 }, { 245, 0 }, { 306, 0 }, { 367, 0 } };
    bool[] brickLive = { true, true, true, true, true, true, true };

    brickImage = Breakout.Properties.Resources.brick_fw;

    for (int i = 0; i < brickLocation.GetLength(0); i++)
    {
        brickRec = new Rectangle(brickLocation[i, 0], brickLocation[i, 1], brickLength, brickHeight);

    }
}


public void drawBrick(Graphics paper)
{
    paper.DrawImage(brickImage, brickRec);
}

一个Rectangle值只能代表一个矩形,因此,如果要多个矩形,可以遍历数组的一个维度,并为每对值创建一个矩形:

for (int i = 0; i < brickLocation.GetLength(0); i++) {
  brickRec = new Rectangle(brickLocation[i, 0], brickLocation[i, 1], brickLength, brickHeight);
  // draw the rectangle
}

编辑:

为了将矩形的绘制与矩形的创建分开进行,您可以将它们放在矩形数组中:

private Rectangle[] brickRec;

public Brick()
{
    brickLength = 60;
    brickHeight = 20;
    int[,] brickLocation = { { 0, 0 }, { 62, 0 }, { 123, 0 }, { 184, 0 }, { 245, 0 }, { 306, 0 }, { 367, 0 } };
    bool[] brickLive = { true, true, true, true, true, true, true };

    brickImage = Breakout.Properties.Resources.brick_fw;

    brickRec = new Rectangle[brickLocation.GetLength(0)];
    for (int i = 0; i < brickLocation.GetLength(0); i++)
    {
        brickRec[i] = new Rectangle(brickLocation[i, 0], brickLocation[i, 1], brickLength, brickHeight);
    }
}


public void drawBrick(Graphics paper)
{
    for (int i = 0; i < brickRec.Length; i++) {
        paper.DrawImage(brickImage, brickRec[i]);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM