←Select platform

Clone() Method

Summary

Creates an exact copy of the current page of this RasterImage.

Syntax

C#
VB
Java
Objective-C
WinRT C#
C++
public RasterImage Clone() 
Public Overloads Function Clone() As Leadtools.RasterImage 
public Leadtools.RasterImage Clone() 
- (nullable LTRasterImage *)clone:(NSError **)error 
public RasterImage clone() 
 function Leadtools.RasterImage.Clone()() 
public: 
Leadtools.RasterImage^ Clone();  

Return Value

The RasterImage this method creates.

Remarks

You can also use the /#ctor 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 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 CloneCommand.

Example

This example loads a multi-page image and clones it in 3 different ways.

C#
VB
Silverlight C#
Silverlight VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Core; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Dicom; 
using Leadtools.Drawing; 
using Leadtools.Controls; 
using LeadtoolsExamples.Common; 
using Leadtools.Svg; 
 
public void CloneExample() 
{ 
   RasterCodecs codecs = new RasterCodecs(); 
 
   string srcFileName = Path.Combine(ImagesPath.Path, "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); 
   Assert.IsTrue(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); 
   Assert.IsTrue(destImage2.PageCount == 1); 
   Assert.IsTrue(destImage2.Width == srcImage.Width / 2); 
   Assert.IsTrue(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); 
   Assert.IsTrue(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); 
   Assert.IsTrue(destImage4.PageCount == 1); 
   Assert.IsTrue(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"); 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing 
Imports Leadtools.ImageProcessing.Core 
Imports Leadtools.ImageProcessing.Color 
Imports Leadtools.Controls 
Imports Leadtools.Dicom 
Imports Leadtools.Drawing 
Imports Leadtools.Svg 
 
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 
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Dicom; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Core; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Examples; 
using Leadtools.Windows.Media; 
 
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"); 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.Dicom 
Imports Leadtools.ImageProcessing 
Imports Leadtools.ImageProcessing.Core 
Imports Leadtools.ImageProcessing.Color 
Imports Leadtools.Windows.Media 
 
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 

Requirements

Target Platforms

Help Version 19.0.2017.10.27
Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.

Leadtools Assembly