Please look this code. It uses the event OnImageIDRequestEx of TImageEnMView to show a thumbnail only when requested.
Actually the requested rectangle is copied two times from the main image (one in the shared object MyBitmap and one inside TImageEnMView), but only when it needs to be displayed. Non-visible thumbnails aren't copied at all.
There aren't other ways using TImageEnMView.
// declare a global TIEBitmap object that will be used in ImageEnMView1ImageIDRequestEx
var MyBitmap:TIEBitmap;
// subrectangles of "image.jpg" to show
const subrects:array [0..3] of TIERectangle = (
(x:0; y:0; width:100; height:100),
(x:120; y:200; width:80; height:200),
(x:0; y:220; width:300; height:70),
(x:0; y:400; width:300; height:70)
);
// Load "image.jpg" and add rectangles defined in "subrects"
procedure TForm1.Button22Click(Sender: TObject);
var
i:integer;
begin
MyBitmap := TIEBitmap.Create(); // remember to Free!!
imageenview1.io.loadfromfile('hongkong.jpg');
for i:=0 to high(subrects) do
ImageEnMView1.ImageID[ ImageEnMView1.AppendImage() ] := i;
end;
// copy the requested rectangle when necessary
procedure TForm1.ImageEnMView1ImageIDRequestEx(Sender: TObject; ID: Integer; var Bitmap: TIEBitmap);
begin
Bitmap := MyBitmap;
Bitmap.Allocate(subrects[ID].width, subrects[ID].height);
ImageEnView1.IEBitmap.CopyRectTo(Bitmap, subrects[ID].x, subrects[ID].y, 0, 0, subrects[ID].width, subrects[ID].height);
end;