Leadtools.WinForms Namespace > RasterImageViewer Class : AutoDisposeImages Property |
[DescriptionAttribute("Indicating whether to auto dispose the old image when a new image is set into this control")] [CategoryAttribute("Behavior")] public virtual bool AutoDisposeImages {get; set;}
'Declaration <DescriptionAttribute("Indicating whether to auto dispose the old image when a new image is set into this control")> <CategoryAttribute("Behavior")> Public Overridable Property AutoDisposeImages As Boolean
'Usage Dim instance As RasterImageViewer Dim value As Boolean instance.AutoDisposeImages = value value = instance.AutoDisposeImages
[DescriptionAttribute("Indicating whether to auto dispose the old image when a new image is set into this control")] [CategoryAttribute("Behavior")] public virtual bool AutoDisposeImages {get; set;}
DescriptionAttribute("Indicating whether to auto dispose the old image when a new image is set into this control") CategoryAttribute("Behavior") get_AutoDisposeImages();
set_AutoDisposeImages(value);
[DescriptionAttribute("Indicating whether to auto dispose the old image when a new image is set into this control")] [CategoryAttribute("Behavior")] public: virtual property bool AutoDisposeImages { bool get(); void set ( bool value); }
Private Sub viewer_ImageChanged(ByVal sender As Object, ByVal e As EventArgs) Dim viewer As RasterImageViewer = CType(IIf(TypeOf sender Is RasterImageViewer, sender, Nothing), RasterImageViewer) Dim s As String If Not viewer.Image Is Nothing Then s = String.Format("Image Changed: New Width {0}, NewHeight {1}", viewer.Image.Width, viewer.Image.Height) Else s = "No Image" End If Console.WriteLine(s) End Sub Public Sub RasterImageViewer_AutoDisposeImages(ByVal viewer As RasterImageViewer) ' Load two image2 Dim codecs As RasterCodecs = New RasterCodecs() Dim file1 As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp") Dim file2 As String = Path.Combine(LEAD_VARS.ImagesDir, "Image2.cmp") AddHandler viewer.ImageChanged, AddressOf viewer_ImageChanged Dim image1 As RasterImage = codecs.Load(file1) Dim image2 As RasterImage = codecs.Load(file2) ' Make sure the AutoDisposeImages property of the viewer is set to true viewer.AutoDisposeImages = True ' Set the first image into the viewer viewer.Image = image1 ' Now set the second image into the viewer (this disposes the first image since the AutoDisposeImages property is true) viewer.Image = image2 ' Try to access the first image, it generates a NullReferenceException exception since the image has been disposed MessageBox.Show("Try to access the first image, it generates a NullReferenceException exception since the image has been disposed.") Try Dim width As Integer = image1.Width MessageBox.Show(String.Format("Width is {0} pixels", width)) Catch ex As NullReferenceException MessageBox.Show(ex.Message) End Try ' Set the image to null (will dispose the second image as well) viewer.Image = Nothing ' Now re-load the two images image1 = codecs.Load(file1) image2 = codecs.Load(file2) ' Make sure the AutoDisposeImages property of the viewer is set to false viewer.AutoDisposeImages = False ' Set the first image into the viewer viewer.Image = image1 ' Now set the second image into the viewer (this will not disposes the first image since the AutoDisposeImages property is false) viewer.Image = image2 ' Try to access the first image, it should work fine this time Try Dim width As Integer = image1.Width MessageBox.Show(String.Format("Width is {0} pixels", width)) Catch ex As NullReferenceException MessageBox.Show(ex.Message) End Try ' Set the image to null (will not dispose the second image) viewer.Image = Nothing ' We should now dispose the two images manually image1.Dispose() image2.Dispose() RemoveHandler viewer.ImageChanged, AddressOf viewer_ImageChanged End Sub Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" End Class
private void viewer_ImageChanged(object sender, EventArgs e) { RasterImageViewer viewer = sender as RasterImageViewer; string s; if (viewer.Image != null) s = string.Format("Image Changed: New Width {0}, NewHeight {1}", viewer.Image.Width, viewer.Image.Height); else s = "No Image"; Console.WriteLine(s); } public void RasterImageViewer_AutoDisposeImages(RasterImageViewer viewer) { // Load two image2 RasterCodecs codecs = new RasterCodecs(); string file1 = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp"); string file2 = Path.Combine(LEAD_VARS.ImagesDir, "Image2.cmp"); viewer.ImageChanged += new EventHandler(viewer_ImageChanged); RasterImage image1 = codecs.Load(file1); RasterImage image2 = codecs.Load(file2); // Make sure the AutoDisposeImages property of the viewer is set to true viewer.AutoDisposeImages = true; // Set the first image into the viewer viewer.Image = image1; // Now set the second image into the viewer (this disposes the first image since the AutoDisposeImages property is true) viewer.Image = image2; // Try to access the first image, it generates a NullReferenceException exception since the image has been disposed MessageBox.Show("Try to access the first image, it generates a NullReferenceException exception since the image has been disposed."); try { int width = image1.Width; MessageBox.Show(string.Format("Width is {0} pixels", width)); } catch (NullReferenceException ex) { MessageBox.Show(ex.Message); } // Set the image to null (will dispose the second image as well) viewer.Image = null; // Now re-load the two images image1 = codecs.Load(file1); image2 = codecs.Load(file2); // Make sure the AutoDisposeImages property of the viewer is set to false viewer.AutoDisposeImages = false; // Set the first image into the viewer viewer.Image = image1; // Now set the second image into the viewer (this will not disposes the first image since the AutoDisposeImages property is false) viewer.Image = image2; // Try to access the first image, it should work fine this time try { int width = image1.Width; MessageBox.Show(string.Format("Width is {0} pixels", width)); } catch (NullReferenceException ex) { MessageBox.Show(ex.Message); } // Set the image to null (will not dispose the second image) viewer.Image = null; // We should now dispose the two images manually image1.Dispose(); image2.Dispose(); viewer.ImageChanged -= new EventHandler(viewer_ImageChanged); } static class LEAD_VARS { public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; }
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2