在.Net中显示图像而不会崩溃应用程序

时间:2015-09-25 13:07:01

标签: c# .net wpf

所以我创建了一个程序,将100张图片加载到屏幕上,每张图片基本上代表一个对象,让用户选择他们想要的图片。

问题是该应用程序无法加载100张图像而不会在我的图片框中留下大量的红色x。

如何减少每张图片所需的内存量?

enter image description here

编辑:图像实际上并不是纯黑色,我只是没有使用图像比例来显示我想要的东西。图像大小实际上是4288 x 2848.我不需要在这个屏幕上,小尺寸图像将工作。

这是拍卖展示。因此,您在此处看到的图像基本上是缩略图,并将带您进入拍卖项目的页面。

CODE: 使用infragistics / WPF

        foreach (var item in Vehicles)
        {
            BitmapImage b = new BitmapImage();
            b.BeginInit();
            b.UriSource = new Uri(item.OverviewImage);
            b.EndInit();

          var addTile = new XamTile
          {
              Content = new Image { Source = b}
          };

          tileManager.Items.Add(addTile);
        }

我试过的其他代码,不是使用infragistics / C#

   public List<Vehicle> Vehicles { get; set; }
    private int count = 0;

    public AuctionScreen()
    {
        InitializeComponent();

        Vehicles = new List<Vehicle>();
    }

    private void AuctionScreen_Load(object sender, EventArgs e)
    {
        timer1.Start();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
            var m = new PictureBox();
            m.ImageLocation = Vehicles[count].OverviewImage;

            flowLayoutPanel1.Controls.Add(m);
            if (count > Vehicles.Count)
            {
                timer1.Stop();
            }
    }

1 个答案:

答案 0 :(得分:0)

您可能希望将所有图像绘制到单个画布上,以减少显示如此多图片框的CPU和RAM开销

我会看看这个问题。 How to render bitmap into canvas in WPF?他们在谈论将图像绘制到画布上时,您应该可以通过在创建矩形时指定矩形来将多个图像绘制到一个画布上。

如果您需要这些可点击的内容,那么只需听一下画布的onClick事件,然后通过鼠标位置获取所需的图像。