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; |