ImageEn, unit imageenview

TImageEnView.VisibleBitmapRect

TImageEnView.VisibleBitmapRect


Declaration

property VisibleBitmapRect: TRect; (read/write)


Description

Show a specific area of the current image, or return the area of the image that is shown.

Note:
The rectangle passed will be automatically adjusted to ensure the correct aspect ratio
Scrollbars are ignored (so some content may be hidden by the scollbars). You can add scrollbars to your values to account for this


Examples

// Show the central portion of an image
ImageEnView1.VisibleBitmapRect := Rect( 100, 100, 200, 200 );

// Output the visible bitmap in ImageEnView1 to ImageEnView2
ImageEnView2.IEBitmap.Width  := IERectangle( ImageEnView1.VisibleBitmapRect ).Width;
ImageEnView2.IEBitmap.Height := IERectangle( ImageEnView1.VisibleBitmapRect ).Height;
ImageEnView1.IEBitmap.DrawToTIEBitmap( ImageEnView2.IEBitmap, 0, 0, IERectangle( ImageEnView1.VisibleBitmapRect ));
ImageEnView2.Update();

// Save the visible bitmap in ImageEnView1 to file
bmp := TIEBitmap.Create( IERectangle( ImageEnView1.VisibleBitmapRect ).Width, IERectangle( ImageEnView1.VisibleBitmapRect ).Height );
ImageEnView1.IEBitmap.DrawToTIEBitmap( bmp, 0, 0, IERectangle( ImageEnView1.VisibleBitmapRect ));
bmp.SaveToFile( 'D:\View.jpg' );
bmp.Free();

// Zoom into the selected area of the image
procedure TMainForm.Button1Click(Sender: TObject);
var
  sel: TIERectangle;
begin
  if ImageEnView1.Selected then
  begin
    sel := ImageEnView1.SelectedRect;
    ImageEnView1.VisibleBitmapRect := Rect( sel.x, sel.y, sel.x + sel.width, sel.y + sel.height );
  end;
end;

// Show Layer 1 completely filling the view
ImageEnView1.VisibleBitmapRect := ImageEnView1.Layers[1].LayerRect;

// Adjust view to show all layers
var
  rect: TIERectangle;
begin
  // Make IEView consider all layers when calculating image bounds
  ImageEnView1.LayerOptions := ImageEnView1.LayerOptions + [loDynamicCanvas];

  // Position layers so origin is 0,0
  rect := ImageEnView1.LayersRect(False, True);
  ImageEnView1.LayersRepositionAll(-rect.X, - rect.Y);

  // Get updated layer rect and show it at size of control
  rect := ImageEnView1.LayersRect(False, True);
  ImageEnView1.VisibleBitmapRect := IERectangleToRect( rect );
end;


See Also

ViewX
ViewY
ExtentX
ExtentY