Code Based - General
Printing bitmaps in scale to both printer and the preview screen
Following is a procedure that will print the bitmap in scale given a desired width OR a desired height. If one is given, the other should be zero, in order for the bitmap to be correctly scaled.
procedure PrintBitmapScaled(BaseReport: TBaseReport; X1: double; Y1: double; DesiredWidth: double; DesiredHeight: double; Bitmap: TBitmap); var Calc: double; begin { PrintBitmapScaled } With BaseReport do begin If DesiredWidth <= 0.0 then begin Calc := DesiredHeight * (Bitmap.Width / XDPI) / (Bitmap.Height / YDPI); PrintBitmapRect(X1,Y1,X1 + Calc,Y1 + DesiredHeight,Bitmap); end else if DesiredHeight <= 0.0 then begin Calc := DesiredWidth * (Bitmap.Height / YDPI) / (Bitmap.Width / XDPI); PrintBitmapRect(X1,Y1,X1 + DesiredWidth,Y1 + Calc,Bitmap); end else begin PrintBitmapRect(X1,Y1,X1 + DesiredWidth,Y1 + DesiredHeight,Bitmap); end; { else } end; { with } end; { PrintBitmapScaled }
An example call to the procedure would then be something like:
PrintBitmapScaled(Sender as TBaseReport,1.0,1.0,4.0,0.0,Bitmap);