Screen.PixelsPerInch与显示器的分辨率800*600等有什么关系?(20分)

  • 主题发起人 主题发起人 myxyz
  • 开始时间 开始时间
M

myxyz

Unregistered / Unconfirmed
GUEST, unregistred user!
Screen.PixelsPerInch与显示器的分辨率800*600等有什么关系?
GetDeviceCaps(Printer.Handle,LOGPIXELSX)是不是打印机的分辨率?
Screen.PixelsPerInch与GetDeviceCaps(Printer.Handle,LOGPIXELSX)的值是同类的吗?
 
1.为什么那样计算能够得到打印纸的宽度?
2.怎么把打印机的像素每厘米转换成显示器中的像素每厘米?
 
>Screen.PixelsPerInch与显示器的分辨率800*600等有什么关系?
Screen.PixelsPerInch与显示器的分辨率没有必然的联系,它表示的是在垂直方向每一个逻辑
英寸单位含有的象素数目
>GetDeviceCaps(Printer.Handle,LOGPIXELSX)是不是打印机的分辨率?
是返回打印机每英寸相素值
>Screen.PixelsPerInch与GetDeviceCaps(Printer.Handle,LOGPIXELSX)的值是同类的吗?
不同类,正如上面解释的那样;但是利用二者之间的关系,我们可以得到打印纸的宽度
与高度 :
function GetPageWidth: Integer;
begin

Result := Screen.PixelsPerInch*GetDeviceCaps(Printer.Handle, PHYSICALWIDTH) div GetPixelsPerInchX);
end;

function GetPageHeight: Integer;
begin

Result := Screen.PixelsPerInch*GetDeviceCaps(Printer.Handle, PHYSICALHEIGHT) div GetPixelsPerInchY);
end;

function GetPixelsPerInchX: Integer;
begin

Result := GetDeviceCaps(Printer.Handle, LOGPIXELSX)
end;

function GetPixelsPerInchY: Integer;
begin

Result := GetDeviceCaps(Printer.Handle, LOGPIXELSY)
end;

 
还是不明白.
Screen.PixelsPerInch=96;
GetDeviceCaps(Printer.Handle, PHYSICALWIDTH)=1488;
GetDeviceCaps(Printer.Handle, LOGPIXELSX)=180;
结果是793.什么意思?
 
接受答案了.
 

function GetPixelsPerInchX: Integer;
begin

Result := GetDeviceCaps(Printer.Handle, LOGPIXELSX)
end;

function GetPixelsPerInchY: Integer;
begin

Result := GetDeviceCaps(Printer.Handle, LOGPIXELSY)
end;

 

Similar threads

后退
顶部