public static IntPtr ConvertToRegionHandle( RasterRegion region, RasterRegionXForm xform )
'Declaration Public Shared Function ConvertToRegionHandle( _ ByVal region As RasterRegion, _ ByVal xform As RasterRegionXForm _ ) As IntPtr
'Usage Dim region As RasterRegion Dim xform As RasterRegionXForm Dim value As IntPtr value = RasterRegionConverter.ConvertToRegionHandle(region, xform)
public static IntPtr ConvertToRegionHandle( RasterRegion region, RasterRegionXForm xform )
public: static IntPtr ConvertToRegionHandle( RasterRegion^ region, RasterRegionXForm^ xform )
The LEADTOOLS Leadtools.RasterRegion class provides a platform independent representation of an area of interest in a Leadtools.RasterImage that can be used in any platform supported by LEADTOOLS such as GDI, GDI+, WPF and Silverlight. Use this class To convert a LEADTOOLS Leadtools.RasterRegion object to/from a GDI HRGN and System.Drawing (GDI+) System.Drawing.Region object.
For more information refer to RasterImage and GDI/GDI+.
' Windows API to use in this example <DllImport("Gdi32")> _ Private Shared Function CreateEllipticRgn(ByVal nLeftRect As Integer, ByVal nTopRect As Integer, ByVal nRightRect As Integer, ByVal nBottomRect As Integer) As IntPtr End Function <DllImport("Gdi32")> _ Private Shared Function DeleteObject(ByVal hObject As IntPtr) As Integer End Function <DllImport("Gdi32")> _ Private Shared Function OffsetRgn(ByVal hrgn As IntPtr, ByVal nXOffset As Integer, ByVal nYOffset As Integer) As Integer End Function Public Sub RasterRegionHandleExample() ' Load an image Dim srcFileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Image1.cmp" Dim dstFileName1 As String = LeadtoolsExamples.Common.ImagesPath.Path + "Image1_Ellipse.jpg" Dim dstFileName2 As String = LeadtoolsExamples.Common.ImagesPath.Path + "Image1_EllipseTranslated.jpg" Dim codecs As New RasterCodecs() Dim image As RasterImage = codecs.Load(srcFileName) ' We will add an ellipse region to the image ' Using GDI, create an elliptical region Dim gdiRegion As IntPtr = CreateEllipticRgn(100, 200, 100 + 400, 200 + 300) ' Create a RasterRegion from this region Using region As RasterRegion = RasterRegionConverter.ConvertFromRegionHandle(gdiRegion) ' Add this region to the image image.SetRegion(Nothing, region, RasterRegionCombineMode.Set) End Using DeleteObject(gdiRegion) ' Fill the image with a color Dim cmd As New FillCommand(RasterColor.FromKnownColor(RasterKnownColor.Red)) cmd.Run(image) ' Save it codecs.Save(image, dstFileName1, RasterImageFormat.Jpeg, 24) ' Now get the GDI+ region from the image Using region As RasterRegion = image.GetRegion(Nothing) ' Convert it to GDI+ gdiRegion = RasterRegionConverter.ConvertToRegionHandle(region, Nothing) End Using ' Move the region 100 pixels to the right and bottom OffsetRgn(gdiRegion, 100, 100) ' Re-set it into the image, fill again and save ' Create a RasterRegion from this region Using region As RasterRegion = RasterRegionConverter.ConvertFromRegionHandle(gdiRegion) ' Add this region to the image image.SetRegion(Nothing, region, RasterRegionCombineMode.Set) End Using DeleteObject(gdiRegion) ' Fill the image with a color cmd = New FillCommand(RasterColor.FromKnownColor(RasterKnownColor.Yellow)) cmd.Run(image) ' Save it codecs.Save(image, dstFileName2, RasterImageFormat.Jpeg, 24) image.Dispose() codecs.Dispose() End Sub
// Windows API to use in this example [DllImport("Gdi32")] private static extern IntPtr CreateEllipticRgn(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect); [DllImport("Gdi32")] private static extern int DeleteObject(IntPtr hObject); [DllImport("Gdi32")] private static extern int OffsetRgn(IntPtr hrgn, int nXOffset, int nYOffset); public void RasterRegionHandleExample() { // Load an image string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp"); string dstFileName1 = Path.Combine(LEAD_VARS.ImagesDir, "Image1_Ellipse.jpg"); string dstFileName2 = Path.Combine(LEAD_VARS.ImagesDir, "Image1_EllipseTranslated.jpg"); RasterCodecs codecs = new RasterCodecs(); RasterImage image = codecs.Load(srcFileName); // We will add an ellipse region to the image // Using GDI, create an elliptical region IntPtr gdiRegion = CreateEllipticRgn(100, 200, 100 + 400, 200 + 300); // Create a RasterRegion from this region using(RasterRegion region = RasterRegionConverter.ConvertFromRegionHandle(gdiRegion)) { // Add this region to the image image.SetRegion(null, region, RasterRegionCombineMode.Set); } DeleteObject(gdiRegion); // Fill the image with a color FillCommand cmd = new FillCommand(RasterColor.FromKnownColor(RasterKnownColor.Red)); cmd.Run(image); // Save it codecs.Save(image, dstFileName1, RasterImageFormat.Jpeg, 24); // Now get the GDI+ region from the image using(RasterRegion region = image.GetRegion(null)) { // Convert it to GDI+ gdiRegion = RasterRegionConverter.ConvertToRegionHandle(region, null); } // Move the region 100 pixels to the right and bottom OffsetRgn(gdiRegion, 100, 100); // Re-set it into the image, fill again and save // Create a RasterRegion from this region using(RasterRegion region = RasterRegionConverter.ConvertFromRegionHandle(gdiRegion)) { // Add this region to the image image.SetRegion(null, region, RasterRegionCombineMode.Set); } DeleteObject(gdiRegion); // Fill the image with a color cmd = new FillCommand(RasterColor.FromKnownColor(RasterKnownColor.Yellow)); cmd.Run(image); // Save it codecs.Save(image, dstFileName2, RasterImageFormat.Jpeg, 24); image.Dispose(); codecs.Dispose(); } static class LEAD_VARS { public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; }
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2