| ImageEn, unit imageenview |
|
TImageEnView.BeginSelect
Declaration
procedure BeginSelect();
Description
Call before a series of
AddSelPoint and
AddSelBreak calls to limit redrawing.
Note:
◼Unlike
EndSelect,
BeginSelect is
Optional it only serves to prevent paint being called (same as wrapping your code in
LockPaint/
UnlockPaint)
◼If you call
BeginSelect, you
must call
EndSelect
◼View a
preview of all selection types
Examples
// Create a polygon selection from an array of TPoints
ImageEnView1.BeginSelect();
for I := Low( MyPolySelArray ) to High( MyPolySelArray ) do
ImageEnView1.AddSelPoint( MyPolySelArray[ I ].x, MyPolySelArray[ I ].y );
ImageEnView1.EndSelect();
// Add a triangular selection
ImageEnView1.BeginSelect();
ImageEnView1.Deselect();
ImageEnView1.AddSelPoint( 200, 100 );
ImageEnView1.AddSelPoint( 300, 200 );
ImageEnView1.AddSelPoint( 100, 200 );
ImageEnView1.EndSelect();
// 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 );

// Convert the current polyline layer to a polygon selection
ImageEnView1.BeginSelect();
ImageEnView1.Deselect();
ImageEnView1.SelectionBase := iesbClientArea;
plyr := TIEPolylineLayer( ImageEnView1.CurrentLayer );
ImageEnView1.LayersCurrent := 0; // Selecting layer 0
for i := 0 to plyr.PointCount - 1 do
begin
xx := Round( plyr.GetPoints( i, iepbClientArea).x );
yy := Round( plyr.GetPoints( i, iepbClientArea).y );
ImageEnView1.AddSelPoint(xx, yy);
end;
ImageEnView1.EndSelect();
ImageEnView1.LayersRemove( plyr.LayerIndex );