ImageEn

Preview of Selection Methods


TImageEnView offers multiple ways for your users to select the image for editing purposes. These are also supported programmatically.

Image Editing Methods

Analysis Methods
Color Adjustment Methods
Color Depth Methods
Detection Methods
Effects Methods
Filter Methods
Geometric Methods
Painting and Alpha Methods
Smoothing Methods
Other Methods
Selection Methods
Interactive Tools

Select

// Add a rectangular selection and adjust levels
ImageEnView1.SelectionBase := iesbBitmap;
ImageEnView1.Select( 160, 120, ImageEnView1.IEBitmap.Width - 160, ImageEnView1.IEBitmap.Height - 120 );


ImageEnView1.Proc.AdjustLevels( 0, 115, 255, 0, 255 );

SelectRoundRect

// Add a curved rectangular selection and clear
ImageEnView1.SelectionBase := iesbBitmap;
ImageEnView1.SelectRoundRect( 160, 120, ImageEnView1.IEBitmap.Width - 160, ImageEnView1.IEBitmap.Height - 120, 30, 30 );


ImageEnView1.Proc.ClearSel( True );

SelectEllipse

// Add a circular selection and colorize (Sepia)
ImageEnView1.SelectionBase := iesbBitmap;
ImageEnView1.SelectEllipse( ImageEnView1.IEBitmap.Width div 2, ImageEnView1.IEBitmap.Height div 2, 480, 360 );


ImageEnView1.InvertSelection( True );
ImageEnView1.MakeSelectionFeather( 8 );
ImageEnView1.Proc.Colorize( 34, 50, 1.10 );

SelectShape

// Add a "Heart" shape selection and clear
ImageEnView1.SelectionBase := iesbBitmap;
ImageEnView1.SelectShape( 160, 120, ImageEnView1.IEBitmap.Width - 160, ImageEnView1.IEBitmap.Height - 120, iesHeart );


ImageEnView1.InvertSelection( True );
ImageEnView1.Proc.ClearSel( True );

SelectColors

// Create a selection based on a color range and discard red and green channels
ImageEnView1.SelectColors( CreateRGB(200, 200, 200), CreateRGB(255, 255, 255) );


ImageEnView1.Proc.Proc.DisposeChannels( 'B00' );

SelectMagicWand

// Create a "flood fill" type selection and discard red and green channels
ImageEnView1.MagicWandTolerance := 24;
ImageEnView1.MagicWandSize := 1;
ImageEnView1.SelectionBase := iesbBitmap;
ImageEnView1.SelectMagicWand( 588, 217 );


ImageEnView1.Proc.Proc.DisposeChannels( 'B00' );

SelectChromaKey

// Select green screen background and clear
ImageEnView1.ChromaKeyOptions.Tolerance := 0.50;
ImageEnView1.ChromaKeyOptions.Saturation := 48;
ImageEnView1.SelectionBase := iesbBitmap;
ImageEnView1.SelectChromaKey( 100, 75 );
ImageEnView1.InvertSelection( True );


ImageEnView1.Proc.ClearSel( True );

AddSelPoint

// Make a polygonal selection and adjust luminance
const
  PENT_X1 = 0.00; PENT_Y1 = 0.39;
  PENT_X2 = 0.19; PENT_Y2 = 1.00;
  PENT_X3 = 0.81; PENT_Y3 = 1.00;
  PENT_X4 = 1.00; PENT_Y4 = 0.39;
  PENT_X5 = 0.50; PENT_Y5 = 0.00;
var
  bw, bh: Integer;
begin
  bw := ImageEnView1.IEBitmap.Width;
  bh := ImageEnView1.IEBitmap.Height;
  ImageEnView1.SelectionBase := iesbBitmap;
  ImageEnView1.BeginSelect();
  ImageEnView1.AddSelPoint( Round( PENT_X1 * bw ), Round( PENT_Y1 * bh ));
  ImageEnView1.AddSelPoint( Round( PENT_X2 * bw ), Round( PENT_Y2 * bh ));
  ImageEnView1.AddSelPoint( Round( PENT_X3 * bw ), Round( PENT_Y3 * bh ));
  ImageEnView1.AddSelPoint( Round( PENT_X4 * bw ), Round( PENT_Y4 * bh ));
  ImageEnView1.AddSelPoint( Round( PENT_X5 * bw ), Round( PENT_Y5 * bh ));
  ImageEnView1.EndSelect();
end;


ImageEnView1.Proc.AdjustLumSatHistogram( 0.00, 0.85 );

AddSelCurve

// Add a curved polygonal selection and adjust levels
curveWidth  := ImageEnView1.IEBitmap.Width / CURVE_COUNT;
curveHeight := ImageEnView1.IEBitmap.Height * 0.4; // Wave Height is 40% of bitmap

ImageEnView1.SelectionBase := iesbBitmap;
ImageEnView1.BeginSelect();
ImageEnView1.AddSelPoint( 0, 0 );
ImageEnView1.AddSelPoint( 0, curveWidth );

curveRate := 2.4; // How curved is the line? 1=half circle
curveStart := 0;
for i := 1 to CURVE_COUNT do
begin
  curveStart := curveStart + curveWidth;
  ImageEnView1.AddSelCurve( Round( curveStart ), curveHeight, curveRate );
  curveRate := -1 * curveRate;   // reverse direction of curve
end;

ImageEnView1.AddSelPoint( ImageEnView1.IEBitmap.Width, 0 );
ImageEnView1.EndSelect();


ImageEnView1.Proc.AdjustLevels( 0, 115, 255, 0, 255 );

AddSelBreak

// Add multiple polygonal selections and fill with white
tw := ImageEnView1.IEBitmap.Width div 4;
th := ImageEnView1.IEBitmap.Height div 4;

ImageEnView1.SelectionBase := iesbBitmap;
ImageEnView1.BeginSelect();
ix := tw div 2;
iy := th div 2;
for i := 1 to 3 do
begin
  ImageEnView1.AddSelPoint( ix + tw div 2, iy );
  ImageEnView1.AddSelPoint( ix + tw, iy + th );
  ImageEnView1.AddSelPoint( ix, iy + th );

  ImageEnView1.AddSelBreak();   // Close this selection

  inc( ix, tw );
  inc( iy, th );
end;
ImageEnView1.EndSelect();


ImageEnView1.Proc.Fill( clWhite );

SelectionMask

// Edit the Selection Mask (1-bit) and adjust luminance
ImageEnView1.SelectionMaskDepth := 1;
for iy := 0 to ImageEnView1.IEBitmap.Height - 1 do
  for ix := 0 to ImageEnView1.IEBitmap.Width - 1 do
  begin
    if _InsideBox( ix, iy ) then
      ImageEnView1.SelectionMask.SetPixel( ix, iy, 1 )
    else
      ImageEnView1.SelectionMask.SetPixel( ix, iy, 0 );
  end;
ImageEnView1.SelectCustom();


ImageEnView1.Proc.AdjustLumSatHistogram( 0.00, 0.85 );



// Edit the Selection Mask (8-bit) and apply gray-scale
ImageEnView1.SelectionMaskDepth := 8;
for iy := 0 to ImageEnView1.IEBitmap.Height - 1 do
  for ix := 0 to ImageEnView1.IEBitmap.Width - 1 do
  begin
    q := Round( iy / ImageEnView1.IEBitmap.Height * 255 );
    ImageEnView1.SelectionMask.SetPixel( ix, iy, q );
  end;
ImageEnView1.SelectCustom();


ImageEnView1.Proc.ConvertToGray();

TIEMask.Assign

// Assign an image (with text) to the selection mask and adjust levels
// Create an all black image (= Unselected)
bmp := TIEBitmap.Create( ImageEnView1.IEBitmap.Width, ImageEnView1.IEBitmap.Height, clBlack );

// Specify the font color, where white will be fully selected, whereas a gray color would be partially selected
bmp.IECanvas.Font.Color := TRGB2TColor( CreateRGB( 255, 255, 255 ));
bmp.IECanvas.Font.Size := 9;
bmp.IECanvas.Font.Style := [fsBold];

tw := bmp.IECanvas.TextWidth( ImageEn! );
th := bmp.IECanvas.TextHeight( ImageEn! );
x := ( ImageEnView1.IEBitmap.Width - tw ) div 2;
y := ( ImageEnView1.IEBitmap.Height - th ) div 2;
bmp.IECanvas.DrawText( ImageEn!, x, y );

ImageEnView1.SelectionMask.Assign( bmp );
ImageEnView1.SelectCustom();
bmp.Free();


ImageEnView1.Proc.AdjustLevels( 0, 115, 255, 0, 255 );



// Load an image to the selection mask and fill with yellow
bmp := TIEBitmap.Create();

// Download this mask image from www.ImageEn.com/Screenshots/IEHelp/Mask.png
bmp.LoadFromFile( 'D:\Mask.png' );


// Set Mask depth to 8bpp, assign and scale it
ImageEnView1.SelectionMask.BitsPerPixel := 8;
ImageEnView1.SelectionMask.Assign( bmp, True );
ImageEnView1.SelectCustom();
bmp.Free();


ImageEnView1.Proc.Fill( $0055E6FF );

See Also

Analysis Methods
Color Adjustment Methods
Color Depth Methods
Detection Methods
Effects Methods
Filter Methods
Geometric Methods
Painting and Alpha Methods
Smoothing Methods
Other Methods
Selection Methods
Interactive Tools