打印基础问题-救急! ( 积分: 20 )

  • 主题发起人 主题发起人 jzg007
  • 开始时间 开始时间
J

jzg007

Unregistered / Unconfirmed
GUEST, unregistred user!
在许多关于DELPHI打印方面的书中介绍如何不受不同打印机的分辨率也能打出相同的效果,其程序如下:
Var
PointX,PointY:integer;
PointX:=GetDeviceCaps(printer?Handle,LOGPIXELSX);
PointY:=GetDeviceCaps(printer?Handle,LOGPIXELSX);
printer.Canvas.rectangle(0,0,PointX*1,PointY*2) ;
这样能得到一个1英寸宽、2英寸高的矩形。
在我的程序中想在,0.5英寸宽、1.5英寸的位置,输出一段文本程序如下:
X1,Y1 : Integer ;
X1 := PointX*0.5;
Y1 := PointY*1.5;
Printer.Canvas.TextOut(X1,Y1,'我爱生活!');
可程序提示:Incompatible types :'Integer' and 'Extended'。我就想知道我的想法是否可行,难道只能在:英寸的整数倍输出文本?请各位高手指点。
 
在许多关于DELPHI打印方面的书中介绍如何不受不同打印机的分辨率也能打出相同的效果,其程序如下:
Var
PointX,PointY:integer;
PointX:=GetDeviceCaps(printer?Handle,LOGPIXELSX);
PointY:=GetDeviceCaps(printer?Handle,LOGPIXELSX);
printer.Canvas.rectangle(0,0,PointX*1,PointY*2) ;
这样能得到一个1英寸宽、2英寸高的矩形。
在我的程序中想在,0.5英寸宽、1.5英寸的位置,输出一段文本程序如下:
X1,Y1 : Integer ;
X1 := PointX*0.5;
Y1 := PointY*1.5;
Printer.Canvas.TextOut(X1,Y1,'我爱生活!');
可程序提示:Incompatible types :'Integer' and 'Extended'。我就想知道我的想法是否可行,难道只能在:英寸的整数倍输出文本?请各位高手指点。
 
X1 := PointX div 2;
Y1 := PointY * 3 div 2;
这样就可以了,PointX,PointY总是个整数,X1,Y1也要是个整数。
自然不能用非整数计算。最后结果自然会四舍五入的。
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
650
import
I
后退
顶部