bmp文件的打印,奇怪了,打出来是空白

wxfangwei 2014-10-10 10:01:54
一个很简单的程序,从bmp图片文件读取(读了一个二维码的图片),然后print,但就是出来空白,啥也没有,真搞了。
代码如下:
var
bmp: TBitmap;
begin
bmp:=TBitmap.Create;
bmp.LoadFromFile('a.bmp');
if PrintDialog1.Execute then
begin
with Printer do
begin
BeginDoc;
Canvas.Draw(100,100,bmp);
Printer.EndDoc;
end;
end;
bmp.Free;
看看没问题啊,a.bmp是存在,并且跟项目在一个文件夹里面的。
...全文
681 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36332153 2016-10-08
  • 打赏
  • 举报
回复
bmp文件保存后,打开是空白的,这是什么原因
wxfangwei 2014-10-22
  • 打赏
  • 举报
回复
感谢楼上的大牛提供的思路,我尝试一下。 先结贴。 感谢大家。
  • 打赏
  • 举报
回复
我的印象这个问题从90年代以来一直有人在问,究其原因在于不同的绘制表面(GDI所谓的设备上下文,DC)所支持的点阵图形(windows中称之为光栅图,raster)绘制能力不一样,显示DC或者内存DC的支持能力最强,而打印机DC经常不支持BitBlt、StretchBlt(但是通常会支持DIB复制StretchDIBits),你需要用GetDeviceCaps确定一下你的打印机驱动所支持的DC绘制能力来决定使用哪个位图绘制函数。
lyhoo163 2014-10-11
  • 打赏
  • 举报
回复
textout就是打印文本信息。
wxfangwei 2014-10-10
  • 打赏
  • 举报
回复
bmp.LoadFromFile('a.bmp'); if PrintDialog1.Execute then begin Printer.BeginDoc; Printer.Canvas.Draw(100,100,bmp); Printer.EndDoc; end; bmp.SaveToFile('b.bmp'); 这么写了,还是空白啊; 最后把bmp再导入图片,图片有图像的啊,咋回事。
dyonggan 2014-10-10
  • 打赏
  • 举报
回复
Canvas.stretchdraw(strect, bitmap.picture.graphic);
aniugee 2014-10-10
  • 打赏
  • 举报
回复
Printer .Canvas.Draw(100,100,bmp); 这样写
wxfangwei 2014-10-10
  • 打赏
  • 举报
回复
检查一下Canvas是不是Printer 的 这句话怎么理解?
aniugee 2014-10-10
  • 打赏
  • 举报
回复
检查一下Canvas是不是Printer 的 或者再保存一下bmp到文件,看看文件是否也是空白
wxfangwei 2014-10-10
  • 打赏
  • 举报
回复
如果加一下textout的话,就会把文本和二维码都打印出来了,啥原因呢?
wxfangwei 2014-10-10
  • 打赏
  • 举报
回复
定义的bmp算是载体了吧。
lyhoo163 2014-10-10
  • 打赏
  • 举报
回复
打印图片,要有一个载体,传入打印机,才能打出来。
haitao 2014-10-10
  • 打赏
  • 举报
回复
打印代码里 多加几个 字符串输出,看看它们是不是能打印出来 或者先把图片加载到Timage,再draw这个Timage1的内容

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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