Products | Support | Email a link to this topic. | Send comments on this topic. | Back to Introduction - All Topics | Help Version 19.0.4.3
|
Leadtools.Controls Assembly > Leadtools.Controls Namespace > RasterPictureBox Class : AutoDisposeImage Property |
This sample loads two images to demonstrate how the AutoDisposeImage property affects whether the item image remains usable.
Imports Leadtools Imports Leadtools.Controls Imports Leadtools.Codecs Imports Leadtools.Drawing Public Sub RasterPictureBox_AutoDisposeImage(ByVal viewer As RasterPictureBox) ' 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") Dim image1 As RasterImage = codecs.Load(file1) Dim image2 As RasterImage = codecs.Load(file2) ' Make sure the AutoDisposeImage property of the viewer is set to true viewer.AutoDisposeImage = 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 AutoDisposeImage 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 AutoDisposeImage property of the viewer is set to false viewer.AutoDisposeImage = 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 AutoDisposeImage 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() codecs.Dispose() End Sub Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" End Class
using Leadtools; using Leadtools.Controls; using Leadtools.Codecs; using Leadtools.Drawing; public void RasterPictureBox_AutoDisposeImage() { RasterPictureBox viewer = new RasterPictureBox(); // 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"); RasterImage image1 = codecs.Load(file1); RasterImage image2 = codecs.Load(file2); // Make sure the AutoDisposeImage property of the viewer is set to true viewer.AutoDisposeImage = 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 AutoDisposeImage 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 AutoDisposeImage property of the viewer is set to false viewer.AutoDisposeImage = 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 AutoDisposeImage 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(); codecs.Dispose(); } static class LEAD_VARS { public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; }