I get the printer resolution (and unprintable are if desired) and then specify coordinates using decimal inches * resulution e.g. x = trunc(1.5 * ResX) at 300 dpi will begin at 360 * 1.5 or 540 pixels. Get Resolution and unprintable ResX := GetDeviceCaps(ACanvas.Handle,LOGPIXELSX); ResY := GetDeviceCaps(ACanvas.Handle,LOGPIXELSY); pOffsetX := GetDeviceCaps(ACanvas.Handle,PHYSICALOFFSETX); pOffsetY := GetDeviceCaps(ACanvas.Handle,PHYSICALOFFSETY); print something Printer.Canvas.TextOut(trunc(1.5 * ResX)-pOffsetX, trunc(2.5 * ResY)-pOffsetY,'Hello'); This is nice when printing data on an existing paper form as you can just measure it up in decimal inches.
Printer.Orientation := poPortrait;
fblv := getdevicecaps(printer.handle, LOGPIXELSX);
fblh := getdevicecaps(printer.handle, LOGPIXELSy);
pageh := TRUNC((printer.PageHeight / fblh) * 25.4);
pagew := TRUNC((printer.PageWidth / fblv) * 25.4); 再加一段,一段~!
then specify coordinates using decimal inches * resulution e.g.
x = trunc(1.5 * ResX) at 300 dpi will begin at 360 * 1.5 or 540 pixels.
Get Resolution and unprintable
ResX := GetDeviceCaps(ACanvas.Handle,LOGPIXELSX);
ResY := GetDeviceCaps(ACanvas.Handle,LOGPIXELSY);
pOffsetX := GetDeviceCaps(ACanvas.Handle,PHYSICALOFFSETX);
pOffsetY := GetDeviceCaps(ACanvas.Handle,PHYSICALOFFSETY);
print something
Printer.Canvas.TextOut(trunc(1.5 * ResX)-pOffsetX,
trunc(2.5 * ResY)-pOffsetY,'Hello');
This is nice when printing data on an existing paper form as you can
just measure it up in decimal inches.
Left := Screen.width - width - 27;
ScrollBox1.Align := alClient;//设置控件的位置
verwbmp := Tbitmap.Create;
verwbmp.Width:= 950;
verwbmp.Height:= 1400;
verwbmp.PixelFormat:= pf8bit;
verwbmpexists := True; //创建个bmp图片
verwbmp.Height:= 1400;
数字后面的单位是什么?像素?
还是其它的?
begin
............
............
............
end;