ImageEn, unit iemview

TImageEnMView.OnImageDraw

TImageEnMView.OnImageDraw


Declaration

property OnImageDraw: TIEImageDrawEvent;


Description

Occurs whenever an image is painted.

Note:
OnImageDraw and OnImageDraw2 are identical, except that OnImageDraw2 includes a ThumbRect parameter to return the rectangle of the image thumbnail
You can use ThumbWidth and ThumbHeight to get the area of the thumbnail box


Example

// Display the image index and sizes on bottom of the thumbnail
// Ensure you have set the BottomGap property
procedure TForm1.ImageEnMView1ImageDraw(Sender: TObject; idx: Integer; Left, Top: Integer; Canvas: TCanvas);
begin
  with canvas do
  begin
    Font.Height := 15;
    Font.Color := clWhite;
    TextOut(Left, Top + ImageEnMView1.ThumbHeight - ImageEnMView1.BottomGap + 2, IntToStr(idx));
    TextOut(Left, Top, IntToStr(ImageEnMView1.ImageWidth[idx]) + 'x' + IntToStr(ImageEnMView1.ImageHeight[idx]));
  end;
end;

// Output the image size in the bottom left of the thumbnail (with a semi transparent background)
procedure TMainForm.ImageEnMView1ImageDraw2(Sender: TObject; idx, Left, Top: Integer; ImageRect: TRect; Canvas: TCanvas);
const
  Right_Margin  = 8;
  Bottom_Margin = 8;
  Text_Margin   = 2;
var
  x1, y1, x2, y2: integer;
  iec: TIECanvas;
  ss: string;
  sz: TSize;
begin
  ss := format( '%d x %d', [ ImageEnMView1.ImageWidth[idx],  ImageEnMView1.ImageHeight[idx] ]);

  // Create our TIECanvas from the regular TCanvas
  iec := TIECanvas.Create( Canvas );
  try
    iec.Font.Size  := 8;
    iec.Font.Color := clWhite;
    iec.Font.Style := [fsBold];

    sz := iec.TextExtent( ss );

    x1 := Left + ImageEnMView1.ThumbWidth - sz.cx - Right_Margin;
    y1 := Top + ImageEnMView1.ThumbHeight - sz.cy - Bottom_Margin;
    x2 := Left + ImageEnMView1.ThumbWidth - Right_Margin;
    y2 := Top + ImageEnMView1.ThumbHeight - Bottom_Margin;

    iec.Brush.Color := clBlack;
    iec.Brush.Style := bsSolid;
    iec.Brush.Transparency := 196;
    iec.Pen.Style := psClear;
    iec.Rectangle( x1 - Text_Margin, y1, x2 + Text_Margin, y2 );
    iec.TextOut( x1, y1, ss );
  finally
    iec.Free();
  end;
end;