←Select platform

ConvertToRegionHandle Method

Summary

Converts a LEADTOOLS Leadtools.RasterRegion to a GDI HRGN object.

Syntax
C#
VB
C++
public static IntPtr ConvertToRegionHandle( 
   RasterRegion region, 
   RasterRegionXForm xform 
) 
Public Shared Function ConvertToRegionHandle( _ 
   ByVal region As RasterRegion, _ 
   ByVal xform As RasterRegionXForm _ 
) As IntPtr 
public: 
static IntPtr ConvertToRegionHandle(  
   RasterRegion^ region, 
   RasterRegionXForm^ xform 
)  

Parameters

region
The source LEADTOOLS region. This parameter cannot be null (Nothing in VB).

xform
Leadtools.RasterRegionXForm object that LEADTOOLS uses to translate between display coordinates and image coordinates.

Return Value

The GDI HRGN object this method creates. You must delete this object after using it using the Windows DeleteObject API.

Remarks

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+, and WPF. 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+.

Example
C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Drawing; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
 
// 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"; 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.Drawing 
Imports Leadtools.ImageProcessing 
Imports Leadtools.ImageProcessing.Color 
 
' 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 

Requirements

Target Platforms

Help Version 20.0.2020.3.31
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Drawing Assembly