http://www.qusoft.com/Imagefix2.html
Images appearing blacked out on printed reports, or images are missing and produce blank page. The fix is here. (27th October 2003)
Black Box Image Bug :
=====================
Changes to File QRCtrls.pas - remove all references to PrintBitmap, use stretchdraw only.
Replace the current code with this -
If you're using TQRGrImage, make the same changes to TQRGrImage.Print in GrImgCtrl.pas
procedure TQRImage.Print(OfsX,OfsY : Integer);
var
Dest : TRect;
DC, SavedDC : THandle;
begin
Dest.Top := QRPrinter.YPos(OfsY + Size.Top);
Dest.Left := QRPrinter.XPos(OfsX + Size.Left);
Dest.Right := QRPrinter.XPos(OfsX + Size.Width + Size.Left);
Dest.Bottom := QRPrinter.YPos(OfsY + Size.Height + Size.Top);
if Stretch then
begin
// remove all references to PrintBitmap, use stretchdraw only
QRPrinter.Canvas.StretchDraw(Dest, Picture.Graphic);
end else
begin
IntersectClipRect(QRPrinter.Canvas.Handle, Dest.Left, Dest.Top, Dest.Right, Dest.Bottom);
DC := GetDC(QRPrinter.Canvas.Handle);
SavedDC := SaveDC(DC);
Dest.Right := Dest.Left +
round(Picture.Width / Screen.PixelsPerInch * 254 * ParentReport.QRPrinter.XFactor);
Dest.Bottom := Dest.Top +
round(Picture.Height / Screen.PixelsPerInch * 254 * ParentReport.QRPrinter.YFactor);
if Center then OffsetRect(Dest,
(QRPrinter.XSize(Size.Width) -
round(Picture.Width / Screen.PixelsPerInch * 254 * ParentReport.QRPrinter.XFactor)) div 2,
(QRPrinter.YSize(Size.Height) -
round(Picture.Height / Screen.PixelsPerInch * 254 * ParentReport.QRPrinter.YFactor)) div 2);
//and again.
QRPrinter.Canvas.StretchDraw(Dest, Picture.Graphic);
RestoreDC(DC, SavedDC);
SelectClipRgn(QRPrinter.Canvas.Handle, 0);
end;
inherited Print(OfsX,OfsY);
end;