如何将毫米(MM)单位转换为像素(Pixel)单位,请大家帮帮忙呀!

zxp922 2004-09-10 11:55:15
我写了一个函数,但实际打印输出时与所想实现的相差甚远,大家多多帮忙哦!

Function MMToPixel(MM: Integer): Integer;
var
p: TPoint;
begin
SetMapMode(printer.Handle, MM_HIMETRIC);
p := Point(MM * 100, 100);
LPToDP(printer.Handle, p, 1);
Result := p.X;
SetMapMode(printer.Handle, MM_TEXT);
end;
...全文
8895 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxp922 2004-09-28
  • 打赏
  • 举报
回复
ultima_thule(ultima_thule:
你好,用MEMO分行确实不错,还是存在一个问题,那就是每行的位置并不相同!左边距有大有小!
inforum 2004-09-27
  • 打赏
  • 举报
回复
还有一个变态的现象,就是winxp下保存的图元文件总归相差一点
inforum 2004-09-27
  • 打赏
  • 举报
回复
注意:与打印机有关,换另外的打印机值会变的!
inforum 2004-09-27
  • 打赏
  • 举报
回复
function mm2pixX(X: Extended): integer;
begin
//横向mm转换为像素点
Result := Trunc(X/25.38*GetDeviceCaps(Printer.Handle, LOGPIXELSY)+0.5);
end;

function mm2pixY(Y: Extended): integer;
begin
//纵向mm转换为像素点
Result := Trunc(Y/25.38*GetDeviceCaps(Printer.Handle, LOGPIXELSX)+0.5);
end;
shaw_jansin 2004-09-27
  • 打赏
  • 举报
回复
可以先把内容放到TMEMO中,让TMEMO帮你分行,然后把TMEMO中的内容按行打印出!
zfang 2004-09-27
  • 打赏
  • 举报
回复
关注一下,顶
netcha 2004-09-27
  • 打赏
  • 举报
回复
取分边率, 一乘就可以了
zxp922 2004-09-26
  • 打赏
  • 举报
回复
ultima_thule(ultima_thule) :
你好,谢谢你的回复,这样处理的话,如果遇到折行打印的话该如何处理呢?
shaw_jansin 2004-09-26
  • 打赏
  • 举报
回复
xpcm := getdevicecaps(PRINTER.HANDLE,LOGPIXELSX)/2.54;
ypcm := getdevicecaps(PRINTER.HANDLE,LOGPIXELSY)/2.54;
printer.BeginDoc;
printer.Canvas.TextOut(3.1*xpcm,5.3ypcm,'Text'); //左3.1厘米,上5.3厘米处打印'Text'
printer.EndDoc();
zxp922 2004-09-25
  • 打赏
  • 举报
回复
YFLK(远方来客) :
你能给个例子吗?
zxp922 2004-09-19
  • 打赏
  • 举报
回复
不管谁只要能提供完美的软件方法,我愿送400分给他!
YFLK 2004-09-18
  • 打赏
  • 举报
回复
你只要知道打印机当时打印时的分辨率,然后再换算下:分辨率/25.4
zxp922 2004-09-17
  • 打赏
  • 举报
回复
没人帮我解决呀
zxp922 2004-09-15
  • 打赏
  • 举报
回复
现在需要解决的问题就是打印机的分辨率问题,因为这个问题是关于定位打印的问题、还有就是打印机的型号不可能都是一样的!还请各位高手帮帮忙啦!
erace992001 2004-09-14
  • 打赏
  • 举报
回复
MM转换成象素是固定的,也就是1MM=3.2Pixel这个有点误差,打印出来大概十米相差2MM左右

但如果是自己写打印函数的话,比较麻烦,要计算打印机的分辨率,如果只是在屏幕上显示,然后用WINDOWS的标准打印程序,就可以采用上面的公式来计算!
zxp922 2004-09-11
  • 打赏
  • 举报
回复
我是新手,还请你们多多帮助我呀
SuanAddMiao 2004-09-11
  • 打赏
  • 举报
回复
您想的有点简单了,这里面还有很多问题。
zxp922 2004-09-11
  • 打赏
  • 举报
回复
trunc(MM/25.4*pixelx);这个计算公式成立吗?
  • 打赏
  • 举报
回复
打印机可就不好说了,每种型号的打印机的标准是有差别的。。
zxp922 2004-09-11
  • 打赏
  • 举报
回复
Eastunfail(龍子龍孫)    (家里停宽带了) :

我要的是打印机每英寸的像素量
加载更多回复(8)

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧