奇怪的打印问题(更正)救命啊!!!

jiafcat 2000-06-28 11:58:00
前一次提出的打印问题,我把现象描述错误,让大家误解了,特此道歉。

经过仔细研究我把程序出现异常的语句,抽离出来,供大家探讨。
以下程序经过编译运行,出现异常。打印的60个图形中,会随机的有
1-3个不打印。但有时,60个图形又均可打印。我换了五台计算机实验。
其中四台有异常情况(配置并不相同),一台没有异常情况。
打印机为激光黑白打印机,600dpi,试过canon LBP800和hp 6l,
均出现异常情况。

我快被折磨死了,大家快救命啊!!!

#include <Printers.hpp>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap * Bitmap = new Graphics::TBitmap();
AnsiString AppPath = ExtractFilePath(Application->ExeName);
AnsiString PdfFileName = AppPath+"Temp.Bmp";
// Temp.Bmp为长820pixel宽216pixel的黑白图形
// 当Temp.Bmp为同样大小的真彩图形时,异常情况依然存在
int Left, Top; // 打印图形的左上角坐标
int LNext = 1000; // 打印图形的列间距
int TNext = 400; // 打印图形的行间距
Printer()->BeginDoc();
TCanvas * OutCanvas = Printer()->Canvas;
// 重复打印15行4列共60个图形
Left = 500;
for(int i=0; i<4; i++)
{
Top = 500;
for(int j=0; j<15; j++)
{
Bitmap->LoadFromFile(PdfFileName); // 每次都从同一文件读取图形
OutCanvas->Draw(Left,Top,Bitmap); // 打印图形
Top += TNext;
}
Left += LNext;
}
Printer()->EndDoc();
delete Bitmap;
}
...全文
103 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
alexela 2000-06-28
  • 打赏
  • 举报
回复
建议你将距Printer()->BeginDoc()和Printer()->EndDoc()间的代码提前,即先绘制好CANVAS,看一下打印效果,再开始直接打印。
或者干脆将图形直接绘在TFORM的CANVAS上,调用FORM的PRINT(),不是来得更省事、更直观?!
注意你的CANVAS的裁减面定义的是多少(也就是绘制图形是否超出范围而不能打印)?
祝你好运!!!
(有时犯不着为如此一个不是技术问题的问题花那么多时间。)

13,822

社区成员

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

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