public class RasterRegionXForm
@interface LTRasterRegionXForm : NSObject
public class RasterRegionXForm
public ref class RasterRegionXForm
class RasterRegionXForm:
All region methods accept a null reference. In that case, no transformation occurs. The scalar fields default to 1, the offsets default to 0, and the view perspective defaults to the image view perspective.
Several of the LEADTOOLS methods for creating and working with an image region use coordinates from an external representation of the region, such as a shape drawn in a device context. To compensate for possible differences in view perspective, scaling, and display offsets, these LEADTOOLS methods require that you provide translation information in an RasterRegionXForm object.
In most cases, the external representation of an image region is scaled and positioned relative to the display coordinates of a LEADTOOLS painting method. Therefore, the following table describes the fields to set in the RasterRegionXForm object, based on the parameters of the display methods.
When assigning an external representation to an image, every point (Xa, Ya) in the an external representation is transformed (by RasterRegionXForm) to point (Xc, Yc) in the image region as follows:
Add offsets: Xb = Xa + XForm.XOffset Yb = Ya + XForm.YOffset
Multiply by scalars: Xc = (Xb * XForm.XScalarNumerator) / XForm.XScalarDenominator Yc = (Yb * XForm.YScalarNumerator) / XForm.YScalarDenominator
Compensate for view perspective (updating Xc and Yc in place): PointToImage(XForm.ViewPerspective, Xc, Yc)
When retrieving an external representation from an image, every point (Xa, Ya) in the image region is transformed (by RasterRegionXForm) to point (Xc, Yc) in the external region as follows:
Compensate for view perspective (updating Xa and Ya in place): PointFromImage(XForm.ViewPerspective, Xa, Ya)
Multiply by scalars: Xb = (Xa * XForm.XScalarNumerator) / XForm.XScalarDenominator Yb = (Ya * XForm.YScalarNumerator) / XForm.YScalarDenominator
Add offsets: Xc = Xb + XForm.XOffset Yc = Yb + XForm.YOffset
For more information, refer to Translating Coordinates for a Region..
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
public void RasterRegionTransformExample()
{
string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp");
string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1_TransformRegion.bmp");
using (RasterCodecs codecs = new RasterCodecs())
{
// Load the source image
using (RasterImage image = codecs.Load(srcFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1))
{
// Add a large elliptical region
image.AddEllipseToRegion(null, new LeadRect(0, 0, image.ImageWidth, image.ImageHeight), RasterRegionCombineMode.Set);
// Fill the image with yellow
FillCommand cmd = new FillCommand(RasterColor.FromKnownColor(RasterKnownColor.Yellow));
cmd.Run(image);
// Get the region
using (RasterRegion region = image.GetRegion(null))
{
// Transform this region by making it twice as small
LeadRect bounds = region.GetBounds();
RasterRegionXForm xform = RasterRegionXForm.Default;
xform.XScalarNumerator = 1;
xform.XScalarDenominator = 2;
xform.YScalarNumerator = 1;
xform.YScalarDenominator = 2;
xform.XOffset = bounds.Width / 2;
xform.YOffset = bounds.Height / 2;
region.Transform(xform);
// Re-set this region into the image
image.SetRegion(null, region, RasterRegionCombineMode.Set);
}
// Now fill with red and save
cmd = new FillCommand(RasterColor.FromKnownColor(RasterKnownColor.Red));
cmd.Run(image);
codecs.Save(image, destFileName, RasterImageFormat.Bmp, 24);
}
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import org.junit.*;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import leadtools.*;
import leadtools.codecs.*;
import leadtools.imageprocessing.FillCommand;
public void rasterRegionTransformExample() {
final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";
String srcFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1.cmp");
String destFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1_TransformRegion.bmp");
RasterCodecs codecs = new RasterCodecs();
// Load the source image
RasterImage image = codecs.load(srcFileName, 0, CodecsLoadByteOrder.BGR_OR_GRAY, 1, 1);
// Add a large elliptical region
image.addEllipseToRegion(null, new LeadRect(0, 0, image.getImageWidth(), image.getImageHeight()),
RasterRegionCombineMode.SET);
// Fill the image with yellow
FillCommand cmd = new FillCommand(RasterColor.fromKnownColor(RasterKnownColor.YELLOW));
cmd.run(image);
// Get the region
RasterRegion region = image.getRegion(null);
// Transform this region by making it twice as small
LeadRect bounds = region.getBounds();
RasterRegionXForm xform = RasterRegionXForm.Default();
xform.setXScalarNumerator(1);
xform.setXScalarDenominator(2);
xform.setYScalarNumerator(1);
xform.setYScalarDenominator(2);
xform.setXOffset(bounds.getWidth() / 2);
xform.setYOffset(bounds.getHeight() / 2);
region.transform(xform);
// Re-set this region into the image
image.setRegion(null, region, RasterRegionCombineMode.SET);
// Now fill with red and save
cmd = new FillCommand(RasterColor.fromKnownColor(RasterKnownColor.RED));
cmd.run(image);
codecs.save(image, destFileName, RasterImageFormat.BMP, 24);
assertTrue("Image unsuccessfully saved", (new File(destFileName)).exists());
System.out.println("Command run and image saved to " + destFileName);
}
Working with the Existing Image Region
Commands and Methods That Transform The Region And the Image
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document