2015-09-25 3 views
0

Итак, я создал программу, которая загружает 100 изображений на экран, каждая фотография в основном представляет объект и позволяет пользователю выбрать, какой из них они хотят.Отображение изображений в .Net без сбоев Приложение

Проблема заключается в том, что приложение не может загрузить 100 изображений, не оставляя тонны красных x в моих картинных ящиках.

Как уменьшить объем памяти, необходимой для каждого изображения?

enter image description here

EDIT: Изображения на самом деле не простой черный, я просто не играл с масштабом изображения еще, чтобы показать, что я хочу. Размеры изображения на самом деле составляют 4288 x 2848. Мне не нужно, чтобы на этом экране работала мелкомасштабная картинка.

Это аукцион. Таким образом, изображение, которое вы видите здесь, представляет собой миниатюру, и вы попадете на страницу позиции аукциона.

КОД: Использование 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(); 
      } 
    } 
+0

Каков размер каждого изображения? Действительно ли они черные (или это просто проблема конфиденциальности)? –

+2

Я бы подтолкнул к масштабированию: https://msdn.microsoft.com/en-us/library/7wt4bf7h%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 – Nebula

+0

отправьте свой код –

ответ

0

Вы, вероятно, будете хотеть, чтобы нарисовать все изображения на один холст, чтобы уменьшить загрузку центрального процессора и ОЗУ, отображая так много картинок

Я бы посмотрел на этот вопрос. How to render bitmap into canvas in WPF? Здесь они говорят о рисовании изображения на холсте, вы должны иметь возможность рисовать несколько изображений на один холст, указав прямоугольник при их создании.

Если вам нужны эти клики, а затем просто прослушайте событие холста onClick и получите нужное изображение с помощью мыши.

Смежные вопросы