请问如何把像素点(PIX)转换成MM(50分)

  • 主题发起人 FLYINGFDK11
  • 开始时间
F

FLYINGFDK11

Unregistered / Unconfirmed
GUEST, unregistred user!
由于要让用户设置某些控件的长度,而需求要求提供按MM来接受用户输入,但控件只接受像素(PIX),我知道有一个函数能实现,但一下子想不起来,请哪个大哥大姐帮忙一下.
 
//把象数转化成毫米,用在打印部分
function PixelToMM(APixel:Real) : Real;
var PixelRate : Real;
begin
case GetDeviceCaps(Printer.Handle, LOGPIXELSX) of //打印机的精度
120 : PixelRate:=0.1701;
180 : PixelRate:=0.1458;
300 : PixelRate:=0.0898;
360 : PixelRate:=0.0729;
600 : PixelRate:=0.0449;
720 : PixelRate:=0.0365;
1200: PixelRate:=0.0224;
end;
Result := APixel * PixelRate;
end;
 
可能我的问题问的有点含糊,我的意思是这样的,我现在在看报表程序,
由于其中的字段宽度是由用户动态设定的,但在这些值设定之前我要提供
一个界面让用户看到字段设定的栏宽在打印纸张上的比率,我是通一个
状态欄(TStatusBar)来显示用户设定的宽度在纸张上的比率,但由
于TstatusBar的WIDTH属性得到的是像素点如(600),但我要把他换成MM.
 
就是这样:
YourMM := PixelToMM(600);
这样YourMM就是你要得到的MM了。
 
请问这个函数是在那个unit里,我在帮助信息里找不到此函数
 
function PixelToMM(APixel:Real) : Real;
var PixelRate : Real;
begin
PixelRate := GetDeviceCaps(Printer.Handle, LOGPIXELSX); //打印机上每英寸点数
Result := APixel / PixelRate * 25.38888;
//1英寸=25.3888毫米
end;
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
752
DelphiTeacher的专栏
D
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
顶部