private void ShowImage() { if ((currentIndex < 0) || (currentIndex >= elements.Count)) { return; } parentListView.SelectedItem = elements[currentIndex]; parentListView.ScrollIntoView(parentListView.SelectedItem); Title = elements[currentIndex].Name; MemoryStream ms = new MemoryStream(); (elements[currentIndex] as FileElement).SaveTo(ms); image.SnapsToDevicePixels = true; image.UseLayoutRounding = true; image.RenderTransform = new ScaleTransform(); Zoom = 1; //image.Source = img; //BitmapFrame bmp = null; bmp = null; try { ms.Position = 0; bmp = ImgConverter.StreamToBitmapImage(ms); image.Source = bmp; //bmp = BitmapFrame.Create(ms, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad); //ImageBehavior.SetAnimatedSource(image, bmp); //bmp = null; } catch { } ms.Dispose(); TextBlockStatus1.Text = "Image size: " + FormatingSize(elements[currentIndex].Size); TextBlockStatus2.Text = "Image resolution: " + bmp?.PixelWidth + " x " + bmp?.PixelHeight; TextBlockStatus3.Text = "DPI: X=" + (int?)bmp?.DpiX + " Y=" + (int?)bmp?.DpiY; TextBlockStatus4.Text = (currentIndex + 1).ToString() + @" / " + elements.Count.ToString(); try { if (((bmp.Width * (bmp.DpiX / 96)) > border.RenderSize.Width) || ((bmp.Height * (bmp.DpiY / 96)) > border.RenderSize.Height) || (border.Width == 0) || (bmp.DpiX == 0) || (bmp.DpiY == 0)) { image.Stretch = Stretch.Uniform; } else { image.Stretch = Stretch.None; image.RenderTransform = new ScaleTransform(bmp.DpiX / 96, bmp.DpiY / 96, bmp.Width / 2, bmp.Height / 2); } } catch { } GC.Collect(); }