public void UnloadImage() { if (IsClosing) { return; } imageCached = BitmapChangeTracker.UndoCount != 0 || BitmapChangeTracker.RedoCount != 0; bool isGif = BitmapChangeTracker.Format == ImgFormat.gif; if (!imageCached) { ibMain.Image = null; BitmapChangeTracker.Clear(); } else { ibMain.DisposeImageBeforeChange = false; // let the change tracker handle disposing ibMain.Image = null; ibMain.DisposeImageBeforeChange = true; } ImageShown = false; OnImageUnload(); if (InternalSettings.Garbage_Collect_On_Image_Unload) { GC.Collect(); } }
/// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { bool isGif = BitmapChangeTracker.Format == Helpers.ImgFormat.gif; BitmapChangeTracker.Dispose(); ibMain.Dispose(); if (disposing && (components != null)) { components.Dispose(); } if (ImageViewer.Settings.InternalSettings.Garbage_Collect_On_Image_Unload) { System.GC.Collect(); } else if (ImageViewer.Settings.InternalSettings.Garbage_Collect_After_Disposing_Gif && isGif) { System.GC.Collect(); } base.Dispose(disposing); }
private void LoadImage() { if (PreventLoadImage) { return; } ibMain.Text = ""; if (!File.Exists(imagePath.FullName)) { ibMain.Image = null; ImageShown = false; OnImageUnload(); Invalidate(); //MessageBox.Show("invalid image"); /*MessageBox.Show(this, * InternalSettings.Item_Does_Not_Exist_Message, * InternalSettings.Item_Does_Not_Exist_Title, * MessageBoxButtons.OK); * * Program.mainForm.CloseCurrentTabPage(); * * // need to call this here to display the image * // of the tab that gets selected after CloseCurrentTabPage * if (Program.mainForm.CurrentPage != null) * Program.mainForm.CurrentPage.LoadImageSafe(); */ ibMain.Text = "The Path: \n" + imagePath.FullName + "\nDoes Not Exists"; return; } if (changingImagePath) { BitmapChangeTracker?.Clear(); } if (BitmapChangeTracker.CurrentBitmap == null) { BitmapChangeTracker.CurrentBitmap = ImageHelper.LoadImage(ImagePath.FullName); //ImageHelper.LoadImageAsBitmap(imagePath.FullName); if (BitmapChangeTracker.CurrentBitmap == null || BitmapChangeTracker.CurrentBitmap.Image == null) { ibMain.Image = null; ImageShown = false; ibMain.Text = "The Path: \n" + imagePath.FullName + "\nCould Not Be Loaded, The Image Is Invalid / Unsupported"; OnImageUnload(); Invalidate(); } } if (InternalSettings.Show_Default_Transparent_Colors) { ibMain.GridColor = InternalSettings.Default_Transparent_Grid_Color; ibMain.GridColorAlternate = InternalSettings.Default_Transparent_Grid_Color_Alternate; } else { ibMain.GridColor = InternalSettings.Current_Transparent_Grid_Color; ibMain.GridColorAlternate = InternalSettings.Current_Transparent_Grid_Color_Alternate; } if (ImageAnimator.CanAnimate(BitmapChangeTracker.CurrentBitmap.Image)) { int curFrame = 0; if (GifDecoder != null) { curFrame = GifDecoder.ActiveFrameIndex; } GifDecoder = new GifDecoder(BitmapChangeTracker.CurrentBitmap as Gif); if (curFrame != 0) { GifDecoder.SetFrame(curFrame); } } else { GifDecoder = null; } ibMain.Image = BitmapChangeTracker.CurrentBitmap; ImageShown = true; OnImageLoad(); Invalidate(); }