En delphi 2010 y QR 5.05.2 me va con la modificación del método CreateMetafilecanvas en la unidad QrPrntr:
Código Delphi
[-]
procedure TQRPrinter.CreateMetafileCanvas;
function scaleToNativeDeskRes(pVal: Integer): Integer;
var
tTemp: HDC;
begin
tTemp := GetDC(0);
try
Result := Round((pVal * GetDeviceCaps(tTemp, VERTRES)) / GetDeviceCaps(tTemp, DESKTOPVERTRES));
finally
ReleaseDC(0, tTemp);
end;
end;
begin
FMetafile := TMetafile.Create;
{$ifdef HIRES}
XFactor := GetDeviceCaps(aPrinter.Handle, LogPixelsX) / 254;
YFactor := GetDeviceCaps(aPrinter.Handle, LogPixelsY) / 254;
FMetafile.Width := XSize(PaperWidthValue);
FMetafile.Height := YSize(PaperLengthValue);
FCanvas := TMetafileCanvas.Create(FMetafile, aprinter.Handle);
FCanvas.Font.PixelsPerInch := GetDeviceCaps(aprinter.Handle, LOGPIXELSY);
{$else}
FMetafile.Width := scaleToNativeDeskRes(XSize(PaperWidthValue));
FMetafile.Height := scaleToNativeDeskRes(YSize(PaperLengthValue));
FCanvas := TMetafileCanvas.Create(FMetafile, 0);
YFactor := Screen.PixelsPerInch / 254;
XFactor := YFactor;
SetGraphicsMode( FCanvas.handle, GM_ADVANCED);
{$endif}
end;