Creates an exact copy of the current page of this RasterImage.
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();
The RasterImage this method creates.
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.
This example loads a multi-page image and clones it in 3 different ways.
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 imageRasterImage 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 onlyRasterImage 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 onlyLeadRect 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 pagesRasterImage 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 updestImage4.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 LeadtoolsImports Leadtools.CodecsImports Leadtools.ImageProcessingImports Leadtools.ImageProcessing.CoreImports Leadtools.ImageProcessing.ColorImports Leadtools.ControlsImports Leadtools.DicomImports Leadtools.DrawingImports Leadtools.SvgPublic Sub CloneExample()Dim codecs As RasterCodecs = New RasterCodecs()Dim srcFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "eye.gif")' Load the multi-page imageDim 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 onlyDim 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 onlyDim 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 pagesDim 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_ProgresscloneCmd.CreateFlags = RasterMemoryFlags.DiskcloneCmd.Run(srcImage)RemoveHandler cloneCmd.Progress, AddressOf cloneCmd_ProgressDim destImage4 As RasterImage = cloneCmd.DestinationImageConsole.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 updestImage4.Dispose()destImage3.Dispose()destImage2.Dispose()destImage1.Dispose()srcImage.Dispose()codecs.Dispose()End SubPrivate Sub cloneCmd_Progress(ByVal sender As Object, ByVal e As RasterCommandProgressEventArgs)If e.Percent = 0 ThenConsole.WriteLine("Clone progress started")End IfIf e.Percent = 100 ThenConsole.WriteLine("Clone progress ended")End IfEnd SubPublic NotInheritable Class LEAD_VARSPublic 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 onlyRasterImage 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 onlyLeadRect 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 pagesRasterImage 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 updestImage4.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 LeadtoolsImports Leadtools.CodecsImports Leadtools.DicomImports Leadtools.ImageProcessingImports Leadtools.ImageProcessing.CoreImports Leadtools.ImageProcessing.ColorImports Leadtools.Windows.MediaPublic 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 onlyDim 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 onlyDim 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 pagesDim 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_ProgresscloneCmd.CreateFlags = RasterMemoryFlags.ConventionalcloneCmd.Run(srcImage)RemoveHandler cloneCmd.Progress, AddressOf cloneCmd_ProgressDim destImage4 As RasterImage = cloneCmd.DestinationImageDebug.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 updestImage4.Dispose()destImage3.Dispose()destImage2.Dispose()destImage1.Dispose()srcImage.Dispose()End SubPrivate Sub cloneCmd_Progress(ByVal sender As Object, ByVal e As RasterCommandProgressEventArgs)If e.Percent = 0 ThenDebug.WriteLine("Clone progress started")End IfIf e.Percent = 100 ThenDebug.WriteLine("Clone progress ended")End IfEnd Sub
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET
