Visual Basic (Declaration) | |
---|---|
Overloads Public Function Clone() As RasterImage |
Visual Basic (Usage) | Copy Code |
---|---|
Dim instance As RasterImage Dim value As RasterImage value = instance.Clone() |
C# | |
---|---|
public RasterImage Clone() |
C++/CLI | |
---|---|
public: RasterImage^ Clone(); |
Return Value
The RasterImage this method creates.This example loads a multi-page image and clones it in 3 different ways.
Visual Basic | Copy Code |
---|---|
Public Sub CloneExample() Dim codecs As RasterCodecs = New RasterCodecs() Dim srcFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "eye.gif") ' Load the multi-page image Dim srcImage As RasterImage = codecs.Load(srcFileName) Console.WriteLine("Pages in source image: {0}", srcImage.PageCount) ' Use the Clone method to clone this image ' Notice, this method only clones the current active page only Dim destImage1 As RasterImage = srcImage.Clone() Console.WriteLine("Pages in image created with Clone: {0}", destImage1.PageCount) Debug.Assert(destImage1.PageCount = 1) ' Use the Clone rectangle method to clone this image ' Notice, this method also clones the current active page only Dim rc As LeadRect = New LeadRect(0, 0, srcImage.Width \ 2, srcImage.Height \ 2) Console.WriteLine("Cloning with a rectangle = {0}", rc.ToString()) Dim destImage2 As RasterImage = srcImage.Clone(rc) Console.WriteLine("Pages in image created with Clone(LeadRect): {0}", destImage2.PageCount) Console.WriteLine("Image created with Clone(LeadRect) size = {0} by {1}", destImage2.Width, destImage2.Height) Debug.Assert(destImage2.PageCount = 1) Debug.Assert(destImage2.Width = srcImage.Width \ 2) Debug.Assert(destImage2.Height = srcImage.Height \ 2) ' Use the CloneAll method, this should create a copy ' of all the pages Dim destImage3 As RasterImage = srcImage.CloneAll() Console.WriteLine("Pages in image created with CloneAll: {0}", destImage3.PageCount) Debug.Assert(destImage3.PageCount = srcImage.PageCount) ' Use the CloneCommand, this allows you to have a progress ' bar as well as control the memory flags, here ' we will create a destination image using disk memory. Dim cloneCmd As CloneCommand = New CloneCommand() AddHandler cloneCmd.Progress, AddressOf cloneCmd_Progress cloneCmd.CreateFlags = RasterMemoryFlags.Disk cloneCmd.Run(srcImage) RemoveHandler cloneCmd.Progress, AddressOf cloneCmd_Progress Dim destImage4 As RasterImage = cloneCmd.DestinationImage Console.WriteLine("Pages in image created with CloneCommand: {0}", destImage4.PageCount) Console.WriteLine("Disk memory model of image created with CloneCommand: {0}", destImage4.IsDiskMemory) Debug.Assert(destImage4.PageCount = 1) Debug.Assert(destImage4.IsDiskMemory) ' Clean up destImage4.Dispose() destImage3.Dispose() destImage2.Dispose() destImage1.Dispose() srcImage.Dispose() codecs.Dispose() End Sub Private Sub cloneCmd_Progress(ByVal sender As Object, ByVal e As RasterCommandProgressEventArgs) If e.Percent = 0 Then Console.WriteLine("Clone progress started") End If If e.Percent = 100 Then Console.WriteLine("Clone progress ended") End If End Sub Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" End Class |
C# | Copy Code |
---|---|
public void CloneExample() { RasterCodecs codecs = new RasterCodecs(); string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "eye.gif"); // Load the multi-page image RasterImage srcImage = codecs.Load(srcFileName); Console.WriteLine("Pages in source image: {0}", srcImage.PageCount); // Use the Clone method to clone this image // Notice, this method only clones the current active page only RasterImage destImage1 = srcImage.Clone(); Console.WriteLine("Pages in image created with Clone: {0}", destImage1.PageCount); Debug.Assert(destImage1.PageCount == 1); // Use the Clone rectangle method to clone this image // Notice, this method also clones the current active page only LeadRect rc = new LeadRect(0, 0, srcImage.Width / 2, srcImage.Height / 2); Console.WriteLine("Cloning with a rectangle = {0}", rc.ToString()); RasterImage destImage2 = srcImage.Clone(rc); Console.WriteLine("Pages in image created with Clone(LeadRect): {0}", destImage2.PageCount); Console.WriteLine("Image created with Clone(LeadRect) size = {0} by {1}", destImage2.Width, destImage2.Height); Debug.Assert(destImage2.PageCount == 1); Debug.Assert(destImage2.Width == srcImage.Width / 2); Debug.Assert(destImage2.Height == srcImage.Height / 2); // Use the CloneAll method, this should create a copy // of all the pages RasterImage destImage3 = srcImage.CloneAll(); Console.WriteLine("Pages in image created with CloneAll: {0}", destImage3.PageCount); Debug.Assert(destImage3.PageCount == srcImage.PageCount); // Use the CloneCommand, this allows you to have a progress // bar as well as control the memory flags, here // we will create a destination image using disk memory. CloneCommand cloneCmd = new CloneCommand(); cloneCmd.Progress += new EventHandler<RasterCommandProgressEventArgs>(cloneCmd_Progress); cloneCmd.CreateFlags = RasterMemoryFlags.Disk; cloneCmd.Run(srcImage); cloneCmd.Progress -= new EventHandler<RasterCommandProgressEventArgs>(cloneCmd_Progress); RasterImage destImage4 = cloneCmd.DestinationImage; Console.WriteLine("Pages in image created with CloneCommand: {0}", destImage4.PageCount); Console.WriteLine("Disk memory model of image created with CloneCommand: {0}", destImage4.IsDiskMemory); Debug.Assert(destImage4.PageCount == 1); Debug.Assert(destImage4.IsDiskMemory); // Clean up destImage4.Dispose(); destImage3.Dispose(); destImage2.Dispose(); destImage1.Dispose(); srcImage.Dispose(); codecs.Dispose(); } void cloneCmd_Progress(object sender, RasterCommandProgressEventArgs e) { if(e.Percent == 0) Console.WriteLine("Clone progress started"); if(e.Percent == 100) Console.WriteLine("Clone progress ended"); } static class LEAD_VARS { public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; } |
SilverlightCSharp | Copy Code |
---|---|
public void CloneExample(RasterImage image) { RasterImage srcImage = image; // should be a multi-page image (eye.gif) Debug.WriteLine("Pages in source image: {0}", srcImage.PageCount); // Use the Clone method to clone this image // Notice, this method only clones the current active page only RasterImage destImage1 = srcImage.Clone(); Debug.WriteLine("Pages in image created with Clone: {0}", destImage1.PageCount); Debug.Assert(destImage1.PageCount == 1); // Use the Clone rectangle method to clone this image // Notice, this method also clones the current active page only LeadRect rc = new LeadRect(0, 0, srcImage.Width / 2, srcImage.Height / 2); Debug.WriteLine("Cloning with a rectangle = {0}", rc.ToString()); RasterImage destImage2 = srcImage.Clone(rc); Debug.WriteLine("Pages in image created with Clone(Rectangle): {0}", destImage2.PageCount); Debug.WriteLine("Image created with Clone(Rectangle) size = {0} by {1}", destImage2.Width, destImage2.Height); Debug.Assert(destImage2.PageCount == 1); Debug.Assert(destImage2.Width == srcImage.Width / 2); Debug.Assert(destImage2.Height == srcImage.Height / 2); // Use the CloneAll method, this should create a copy // of all the pages RasterImage destImage3 = srcImage.CloneAll(); Debug.WriteLine("Pages in image created with CloneAll: {0}", destImage3.PageCount); Debug.Assert(destImage3.PageCount == srcImage.PageCount); // Use the CloneCommand, this allows you to have a progress // bar as well as control the memory flags, here // we will create a destination image using conventional memory. CloneCommand cloneCmd = new CloneCommand(); cloneCmd.Progress += new EventHandler<RasterCommandProgressEventArgs>(cloneCmd_Progress); cloneCmd.CreateFlags = RasterMemoryFlags.Conventional; cloneCmd.Run(srcImage); cloneCmd.Progress -= new EventHandler<RasterCommandProgressEventArgs>(cloneCmd_Progress); RasterImage destImage4 = cloneCmd.DestinationImage; Debug.WriteLine("Pages in image created with CloneCommand: {0}", destImage4.PageCount); Debug.WriteLine("Disk memory model of image created with CloneCommand: {0}", destImage4.IsDiskMemory); Debug.Assert(destImage4.PageCount == 1); Debug.Assert(destImage4.IsConventionalMemory); // Clean up destImage4.Dispose(); destImage3.Dispose(); destImage2.Dispose(); destImage1.Dispose(); srcImage.Dispose(); } void cloneCmd_Progress(object sender, RasterCommandProgressEventArgs e) { if (e.Percent == 0) Debug.WriteLine("Clone progress started"); if (e.Percent == 100) Debug.WriteLine("Clone progress ended"); } |
SilverlightVB | Copy Code |
---|---|
Public Sub CloneExample(ByVal image As RasterImage) Dim srcImage As RasterImage = image ' should be a multi-page image (eye.gif) Debug.WriteLine("Pages in source image: {0}", srcImage.PageCount) ' Use the Clone method to clone this image ' Notice, this method only clones the current active page only Dim destImage1 As RasterImage = srcImage.Clone() Debug.WriteLine("Pages in image created with Clone: {0}", destImage1.PageCount) Debug.Assert(destImage1.PageCount = 1) ' Use the Clone rectangle method to clone this image ' Notice, this method also clones the current active page only Dim rc As LeadRect = New LeadRect(0, 0, srcImage.Width / 2, srcImage.Height / 2) Debug.WriteLine("Cloning with a rectangle = {0}", rc.ToString()) Dim destImage2 As RasterImage = srcImage.Clone(rc) Debug.WriteLine("Pages in image created with Clone(Rectangle): {0}", destImage2.PageCount) Debug.WriteLine("Image created with Clone(Rectangle) size = {0} by {1}", destImage2.Width, destImage2.Height) Debug.Assert(destImage2.PageCount = 1) Debug.Assert(destImage2.Width = srcImage.Width / 2) Debug.Assert(destImage2.Height = srcImage.Height / 2) ' Use the CloneAll method, this should create a copy ' of all the pages Dim destImage3 As RasterImage = srcImage.CloneAll() Debug.WriteLine("Pages in image created with CloneAll: {0}", destImage3.PageCount) Debug.Assert(destImage3.PageCount = srcImage.PageCount) ' Use the CloneCommand, this allows you to have a progress ' bar as well as control the memory flags, here ' we will create a destination image using conventional memory. Dim cloneCmd As CloneCommand = New CloneCommand() AddHandler cloneCmd.Progress, AddressOf cloneCmd_Progress cloneCmd.CreateFlags = RasterMemoryFlags.Conventional cloneCmd.Run(srcImage) RemoveHandler cloneCmd.Progress, AddressOf cloneCmd_Progress Dim destImage4 As RasterImage = cloneCmd.DestinationImage Debug.WriteLine("Pages in image created with CloneCommand: {0}", destImage4.PageCount) Debug.WriteLine("Disk memory model of image created with CloneCommand: {0}", destImage4.IsDiskMemory) Debug.Assert(destImage4.PageCount = 1) Debug.Assert(destImage4.IsConventionalMemory) ' Clean up destImage4.Dispose() destImage3.Dispose() destImage2.Dispose() destImage1.Dispose() srcImage.Dispose() End Sub Private Sub cloneCmd_Progress(ByVal sender As Object, ByVal e As RasterCommandProgressEventArgs) If e.Percent = 0 Then Debug.WriteLine("Clone progress started") End If If e.Percent = 100 Then Debug.WriteLine("Clone progress ended") End If End Sub |
You can also use the RasterImage Constructor(RasterImage) constructor to create an exact copy of an existing RasterImage.
To create a copy of an object while maintaining a progress status, refer to the Leadtools.ImageProcessing.CloneCommand.
This method copies only the current active page and no metadata information is copied. To create an exact copy of a RasterImage object use the CloneAll method.
To clone an image with support for a progress event, refer to Leadtools.ImageProcessing.CloneCommand.
Target Platforms: Silverlight, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only), Windows Phone 7