这个问题众所周知,但我还没有找到解决方案。
每当 Windows 中的 fon-size 设置为高于正常大小时
报表相对于纸张尺寸缩小,
并锚定到页面的左上角,如下所示:
在任何地方打开或关闭“缩放”属性都不会影响此效果。
就像搞乱 PixelsPerInch 一样。
我所见过的唯一解决方案确实有所作为,
可以在 Quickreport 论坛中找到此链接:
QrPreview with UseDpiScaling under Windows7 ,
涉及创建一个新的项目 list 资源,并向其中添加以下行:
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
</assembly>
但是,这样做的唯一作用是使报告中的文本变大,
同时报告保持在相同的边界内,如下所示:
对此可以采取什么措施?
我需要报告适合纸张尺寸,
无论 Windows 字体大小如何,都按照设计的方式显示和打印
最佳答案
我找到了一个可行的解决方案! QRPrntr.pas 补丁:
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.Width := scaleToNativeDeskRes(XSize(PaperWidthValue));
FMetafile.Height := scaleToNativeDeskRes(YSize(PaperLengthValue));
FCanvas := TMetafileCanvas.Create(FMetafile, 0);
FCanvas.Font.PixelsPerInch := MetafileDPI;
...
end;
关于delphi - Windows 字体大小设置为 : (125%, 150%) 或 dpi 大于 96 (120,144) 时,快速报告显示或打印报告不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25924614/