关于tprinter的问题

xhusa 2002-08-19 04:23:07
我现在在做一个打印程序,问题是如何连续打印的问题,
我的纸张尺寸为(单位0.1毫米)3000x1275
我是用Tprinter对象进行直接画布打印
如何才能实现连续打印,希望提供源代码并且要有注释!
...全文
33 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
warton 2002-12-08
  • 打赏
  • 举报
回复
RedProgramer(TST : RedSteel) 说的对!
xhusa 2002-12-08
  • 打赏
  • 举报
回复
up
zxl777 2002-12-08
  • 打赏
  • 举报
回复
up
chely3yang 2002-12-08
  • 打赏
  • 举报
回复
建立一个循环,在循环末尾用 Printer()->NewPage();
在打印对话框里设置纸张大小等等参数,然后
//获取当前打印机页面参数
pagewidth=Printer()->PageWidth;
pageheight=Printer()->PageHeight;
pixelperinchx=GetDeviceCaps(Printer()->canvas->Handle,LOGPIXELSX);
pixelperinchy=GetDeviceCaps(Printer()->canvas->Handle,LOGPIXELSY);
//获取字高和字宽参数
Printer()->canvas->Font->PixelsPerInch=pixelperinchy;//这行是要点!
Printer()->canvas->Font->Name="宋体";
canvas->Font->Size=18;
fontheight=Printer()->canvas->TextHeight("人");
fontwidth=Printer()->canvas->TextWidth("A");
captionheight=2*fontheight;
上述参数均以打印机象素为单位,
后面的换行,行宽均用相对值表示:如设行宽=2*fontheight,行距=fontheight
打印的精华全在此了.
RedProgramer 2002-08-19
  • 打赏
  • 举报
回复
是不是你直接设置打印纸的尺寸就可以了;
void SetPrinterPaperSize(int PaperLength, int PaperWidth)
{
TPrinter * Prntr =Printer();
char *ADevice,*ADriver,*APort;
ADevice=new char[100];
ADriver=new char[100];
APort=new char[100];
THandle DeviceHandle;
PDeviceMode DevMode;
Prntr->GetPrinter(ADevice,ADriver,APort,DeviceHandle);
DevMode=(_devicemodeA*)GlobalLock((void*)DeviceHandle);
DevMode->dmFields=DevMode->dmFields|DM_PAPERSIZE;
DevMode->dmFields=DevMode->dmFields|DM_PAPERLENGTH;
DevMode->dmFields=DevMode->dmFields|DM_PAPERWIDTH;
//
DevMode->dmPaperSize=DMPAPER_USER;
DevMode->dmPaperLength=PaperLength*10;
DevMode->dmPaperWidth=PaperWidth*10;
int s=1;
for(int i=0;s!=0||i<5;i++)
s=GlobalUnlock((void*)DeviceHandle);
Prntr->SetPrinter(ADevice,ADriver,APort,DeviceHandle);
}

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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