【问题标题】:Add image to rectangle array - C#将图像添加到矩形数组 - C#
【发布时间】:2015-01-23 07:02:33
【问题描述】:

我有以下代码,想知道是否可以将brickImage 属性分配给我的代码中的数组。如果是这样,我该如何实现?我基本上想创建一个以多行显示的砖块数组等。

public class Brick
    {
        private int x, y, width, height;
        private Image brickImage;
        private Rectangle brickRec;
        private Rectangle[] brickRecs;

        public Rectangle BrickRec
        {
            get { return brickRec; }
        }


        public Brick()
        {
            x = 0;
            y = 0;
            width = 60;
            height = 20;


            brickImage = Breakout.Properties.Resources.brick_fw;

            brickRec = new Rectangle(x, y, width, height);

            Rectangle[] brickRecs =
            {
                new Rectangle(0, 0, 60, 20),
                new Rectangle(0, 0, 121, 20),
                new Rectangle(0, 0, 242, 20)

            };

        }


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

            //paper.DrawImage(brickImage, brickRecs);
        }

    }

【问题讨论】:

  • “到我的代码中的数组”——到你的代码中的哪个数组?您在这里展示的Brick 课程中的那个?甚至不清楚为什么该类 Rectangle[],更不用说其中有Image 的实例意味着什么。如果您在其他地方有一个 Brick 对象数组,为什么不直接为该 Brick 对象传递对 Image 的引用,以允许将不同的图像用于不同的 Brick 对象?跨度>

标签: c# class multidimensional-array rectangles drawimage


【解决方案1】:

如果您想将图像附加到矩形,只需创建自己的类

public class MyBrick
{
   public Image Image {get; set;}
   public Point[] Locations {get; set;}
}

然后在代码中的某处添加它

MyBrick[] brickRecs  = 
{
   new MyBrick()
   {
       Locations = 
       {
          new Point(60, 20),
          new Point(10, 10),
          //....
       },
       Image = ... // ADD IMAGE REFERENCE HERE
   },

   new MyBrick()
   {
       Locations = 
       {
          new Point(90, 90),
          new Point(5, 5),
          //....
       },
       Image = ... 
   },
};

【讨论】:

  • 这很可能会导致大量资源浪费。相反,应该只存储引用,也许他可以使用ImageList 并且只存储一个键或一个索引!如果所有图像都具有相同的大小,这是最好的方法。否则 List<Bitmap> 会有所帮助..
  • @Boris,再告诉我们一点:您将拥有多少种不同的砖块图像以及多少种不同的图像尺寸?
  • 列表??? 你知道单个 Bitmap 对象的权重是多少吗? 我同意引用更好 - 但这只是一个一般性的演示
  • @TaW 砖块的大小将是相同的,关于图像,我希望在数组中使用 3-4 个不同的(代表不同颜色的砖块),最后以多个显示砖块带有彩色砖块的行将放置在数组中的随机位置。
  • 在该列表中,每个位图仅存储一次。所有使用它的积木只会引用它的索引。事实上,您可以稍微修改您的代码并使用指向列表的 getter。或者现在进入 ImageList..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 2021-06-20
相关资源
最近更新 更多