←Select platform

FillRegion(RasterImage,IntPtr,RasterRegionXForm,RasterColor) Method

Summary
Highlights a region by displaying a filled, color representation of the region in the given Windows device context handle.
Syntax
C#
C++/CLI
Python
public static void FillRegion( 
   RasterImage image, 
   IntPtr hdc, 
   RasterRegionXForm xform, 
   RasterColor color 
) 
public: 
static void FillRegion(  
   RasterImage^ image, 
   IntPtr hdc, 
   RasterRegionXForm^ xform, 
   RasterColor color 
)  
def FillRegion(self,image,hdc,xform,color): 

Parameters

image
The source image.

hdc
Windows device context handle where the image is displayed and where the frame is to appear.

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

color
The color value to be XORed with colors within a region to determine the new colors for displaying the region. The color corresponding to a particular part of the region is determined as follows: Region Color Displayed = (color of pixel in region) XOR (crRgnColor)

Remarks

This method is particularly useful when displaying regions with black and white images. All black pixels in a region are displayed with color specified by  color. and all white pixels are displayed ~( color). For example, suppose that  color is light green (BGR 0x80FF40). All black pixels in the region are displayed as  color. All white pixels in the region are displayed as 0xFFFFFF XOR 0x80FF40 = 0x7F00BF, which is purple.

For more information refer to RasterImage and GDI/GDI+.

Example
C#
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Drawing; 
using Leadtools.ImageProcessing; 
 
 
public void FrameRegionExample() 
{ 
   FrameRegionForm f = new FrameRegionForm(); 
   f.ShowDialog(); 
} 
 
class FrameRegionForm : Form 
{ 
   private int frameIndex; 
   private RasterImage image; 
   private System.Windows.Forms.Timer timer; 
   private bool fillRegion; 
 
   public FrameRegionForm() 
   { 
      // Load the image 
      using (RasterCodecs codecs = new RasterCodecs()) 
      { 
         string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp"); 
         image = codecs.Load(srcFileName); 
      } 
 
      // Add a region to the image 
      LeadRect rc = new LeadRect(image.Width / 3, image.Height / 3, image.Width / 3, image.Height / 3); 
      RasterRegionXForm xform = new RasterRegionXForm(); 
      xform.ViewPerspective = RasterViewPerspective.TopLeft; 
      image.AddEllipseToRegion(xform, rc, RasterRegionCombineMode.Set); 
 
      // initialize the frame index 
      frameIndex = 0; 
 
      fillRegion = true; 
 
      Text = "Double click to enable/disable filling the region"; 
 
      // Create the timer 
      timer = new System.Windows.Forms.Timer(); 
      timer.Interval = 100; 
      timer.Tick += new EventHandler(timer_Tick); 
      timer.Start(); 
   } 
 
   protected override void Dispose(bool disposing) 
   { 
      // Clean up 
      if (disposing) 
      { 
         if (timer != null) 
         { 
            timer.Dispose(); 
         } 
 
         if (image != null) 
         { 
            image.Dispose(); 
         } 
 
      } 
 
      base.Dispose(disposing); 
   } 
 
   protected override void OnDoubleClick(EventArgs e) 
   { 
      fillRegion = !fillRegion; 
      Invalidate(); 
 
      base.OnDoubleClick(e); 
   } 
 
   private RasterRegionXForm GetXForm(LeadRect destRect) 
   { 
      // Calculate xform when the image is painted into 'destRect' 
      RasterRegionXForm xform = new RasterRegionXForm(); 
      xform.ViewPerspective = RasterViewPerspective.TopLeft; 
      xform.XOffset = destRect.Left; 
      xform.YOffset = destRect.Top; 
      xform.XScalarDenominator = image.Width; 
      xform.XScalarNumerator = destRect.Width; 
      xform.YScalarDenominator = image.Height; 
      xform.YScalarNumerator = destRect.Height; 
 
      return xform; 
   } 
 
   protected override void OnPaint(PaintEventArgs e) 
   { 
      // Draw the image fit and center on this form 
      LeadRect destRect = LeadRect.FromLTRB(ClientRectangle.Left, ClientRectangle.Top, ClientRectangle.Right, ClientRectangle.Bottom); 
      destRect = RasterImage.CalculatePaintModeRectangle( 
          image.ImageWidth, 
          image.ImageHeight, 
          destRect, 
          RasterPaintSizeMode.Fit, 
          RasterPaintAlignMode.Center, 
          RasterPaintAlignMode.Center); 
 
      LeadRect clipRect = LeadRect.FromLTRB(e.ClipRectangle.Left, e.ClipRectangle.Top, e.ClipRectangle.Right, e.ClipRectangle.Bottom); 
      RasterImagePainter.Paint(image, e.Graphics, LeadRect.Empty, LeadRect.Empty, destRect, clipRect, RasterPaintProperties.Default); 
 
      if (fillRegion) 
      { 
         RasterRegionXForm xform = GetXForm(destRect); 
         RasterImagePainter.FillRegion(image, e.Graphics, xform, new RasterColor(255, 0, 255)); 
      } 
 
      base.OnPaint(e); 
   } 
 
   private void timer_Tick(object sender, EventArgs e) 
   { 
      // Frame the image region 
      LeadRect destRect = LeadRect.FromLTRB(ClientRectangle.Left, ClientRectangle.Top, ClientRectangle.Right, ClientRectangle.Bottom); 
 
      destRect = RasterImage.CalculatePaintModeRectangle( 
         image.ImageWidth, 
         image.ImageHeight, 
         destRect, 
         RasterPaintSizeMode.Fit, 
         RasterPaintAlignMode.Center, 
         RasterPaintAlignMode.Center); 
 
      RasterRegionXForm xform = GetXForm(destRect); 
 
      using (Graphics g = CreateGraphics()) 
      { 
         RasterImagePainter.FrameRegion(image, g, xform, frameIndex); 
      } 
 
      // advance to next frame 
      frameIndex++; 
      if (frameIndex > RasterImagePainter.MaxRegionFrameIndex) 
      { 
         frameIndex = 0; 
      } 
   } 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
Requirements

Target Platforms

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

Leadtools.Drawing Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.