gpt4 book ai didi

delphi - 缩放像素值以进行打印

转载 作者:行者123 更新时间:2023-12-03 19:35:51 24 4
gpt4 key购买 nike

我正在尝试在与打印相关的一些旧代码中找到某种意义。

在打印机上绘制表格时,每个大小和位置属性都将乘以比例因子。该因子由以下代码计算:

    { Printer device-specific information }
FXScale := (GetDeviceCaps(Printer.Handle, LOGPIXELSX)/96) -
((2-(GetDeviceCaps(Printer.Handle, HORZRES)*2) /
GetDeviceCaps(Printer.Handle, PHYSICALWIDTH)));
FYScale := (GetDeviceCaps(Printer.Handle, LOGPIXELSY)/96) -
((2-(GetDeviceCaps(Printer.Handle, VERTRES)*2) /
GetDeviceCaps(Printer.Handle, PHYSICALHEIGHT)));


谁能解释这里发生了什么?我猜想屏幕分辨率和打印机分辨率之间会有一些映射,但是其余的呢?为什么是2?

最佳答案

好的,不确定我是否有完整的答案,但这也许会有助于朝着正确的方向刺激其他人:

FXScale = (LogPixelsX / 96) - (2 - ((2 * HorzRes) / PhysicalWidth))
= (LogPixelsX / 96) - (2 - (2 * (HorzRes / PhysicalWidth)))
= (LogPixelsX / 96) - (2 * (1 - (HorzRes / PhysicalWidth)))


由于保证 PhysicalWidth大于或等于 HorzRes(请参阅 MS documentation),因此 1 - (HorzRes / PhysicalWidth) = ((PhysicalWidth - HorzRes) / PhysicalWidth)。然后我们有:

FXScale = (LogPixlesX / 96) - (2 * ((PhysicalWidth - HorzRes) / PhysicalWidth)



(LogPixelsX / 96) =打印机DPI与屏幕DPI的比率
((PhysicalWidth - HorzRes) / PhysicalWidth) =不可打印宽度与纸张总宽度之比


因此,看起来像是计算打印机DPI与屏幕DPI的比率,然后减去不可打印宽度与纸张总宽度之比的两倍。也许2是为了远离打印机的物理限制的边缘?

关于delphi - 缩放像素值以进行打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3100895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com