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
// 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 );

// 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 );

// 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 );

// 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 );

// 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' );

// 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' );

// 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 );

// 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 );

// 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 );

// 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 );

// 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();

// 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