/// <summary> /// Displays the image. /// </summary> /// <param name="imageAsBytes">The image as bytes.</param> /// <param name="scrollTo">The scroll to.</param> public void DisplayImage(byte[] imageAsBytes, ImageStartPosition scrollTo) { // If page information is displayed update it with new information if (PageInfoBox.Visibility == System.Windows.Visibility.Visible) { UpdatePageInformation(); } switch (scrollTo.ToString()) { case "Top": { ScrollField.ScrollToTop(); ScrollField.ScrollToLeftEnd(); break; } case "Bottom": { ScrollField.ScrollToBottom(); ScrollField.ScrollToRightEnd(); break; } default: { break; } } BitmapImage bitmapimage = GetImage(imageAsBytes); _imageUtils.ObjectValue = imageAsBytes; this.Background = _imageUtils.BackgroundColor; if (Configuration.OverideHeight || Configuration.OverideWidth) { _imageUtils.ResizeImage(new System.Drawing.Size(bitmapimage.PixelWidth, (int)ScrollField.ViewportHeight), Configuration.OverideHeight, Configuration.OverideWidth); bitmapimage = GetImage(_imageUtils.ObjectValueAsBytes); } DisplayedImage.Source = bitmapimage; DisplayedImage.Width = bitmapimage.PixelWidth; DisplayedImage.Height = bitmapimage.PixelHeight; if (DisplayedImage.Width < ScrollField.ViewportWidth) { DisplayedImage.HorizontalAlignment = HorizontalAlignment.Center; } else if (DisplayedImage.Width >= ScrollField.ViewportWidth) { DisplayedImage.HorizontalAlignment = HorizontalAlignment.Left; } if (DisplayedImage.Height < ScrollField.ViewportHeight) { DisplayedImage.VerticalAlignment = VerticalAlignment.Center; } else if (DisplayedImage.Height >= ScrollField.ViewportHeight) { DisplayedImage.VerticalAlignment = VerticalAlignment.Top; } ShowPageInformation(); }
/// <summary> /// Displays the image. /// </summary> /// <param name="imageAsBytes">The image as bytes.</param> /// <param name="scrollTo">The scroll to.</param> public void DisplayImage(byte[] imageAsBytes, ImageStartPosition scrollTo) { if (Configuration.DoublePage) { var image1 = _comicBook.CurrentFile.CurrentPage; var image2 = _comicBook.CurrentFile.NextPage(); _imageUtils.DrawDouble(image1, image2, new System.Drawing.Size((int)ScrollField.ViewportWidth, (int)ScrollField.ViewportHeight), Configuration.OverrideHeight, Configuration.OverrideWidth); imageAsBytes = _imageUtils.ObjectValueAsBytes; } // If page information is displayed update it with new information if (PageInfoBox.Visibility == Visibility.Visible) { UpdatePageInformation(); } switch (scrollTo.ToString()) { case "Top": { ScrollField.ScrollToTop(); ScrollField.ScrollToLeftEnd(); break; } case "Bottom": { ScrollField.ScrollToBottom(); ScrollField.ScrollToRightEnd(); break; } default: { break; } } BitmapImage bitmapimage = GetImage(imageAsBytes); _imageUtils.ObjectValue = imageAsBytes; // KBR TODO lets try skipping this altogether - maybe reduce memory footprint //try //{ // // This can fail when viewing an archive, and a large image. // Background = _imageUtils.BackgroundColor; //} //catch //{ //} try { // This can fail when viewing an archive, and a large image. if (Configuration.OverrideHeight || Configuration.OverrideWidth) { // KBR 20141230 passing in the bitmap width for the destination size is wrong and relies on "screenwidth" which isn't maintained properly. See comment in ToggleWindowMode() //_imageUtils.ResizeImage(new System.Drawing.Size(bitmapimage.PixelWidth, (int)ScrollField.ViewportHeight), Configuration.OverrideHeight, Configuration.OverrideWidth); _imageUtils.ResizeImage(new System.Drawing.Size((int)ScrollField.ViewportWidth, (int)ScrollField.ViewportHeight), Configuration.OverrideHeight, Configuration.OverrideWidth); bitmapimage = GetImage(_imageUtils.ObjectValueAsBytes); } } catch { } DisplayedImage.Source = bitmapimage; DisplayedImage.Width = bitmapimage.PixelWidth; DisplayedImage.Height = bitmapimage.PixelHeight; if (DisplayedImage.Width < ScrollField.ViewportWidth) { DisplayedImage.HorizontalAlignment = HorizontalAlignment.Center; } else if (DisplayedImage.Width >= ScrollField.ViewportWidth) { DisplayedImage.HorizontalAlignment = HorizontalAlignment.Left; } if (DisplayedImage.Height < ScrollField.ViewportHeight) { DisplayedImage.VerticalAlignment = VerticalAlignment.Center; } else if (DisplayedImage.Height >= ScrollField.ViewportHeight) { DisplayedImage.VerticalAlignment = VerticalAlignment.Top; } ShowPageInformation(); GC.Collect(); }