代码如下:
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是存在,并且跟项目在一个文件夹里面的。
13 个解决方案
#1
检查一下Canvas是不是Printer 的
或者再保存一下bmp到文件,看看文件是否也是空白
或者再保存一下bmp到文件,看看文件是否也是空白
#2
检查一下Canvas是不是Printer 的
这句话怎么理解?
这句话怎么理解?
#3
Printer .Canvas.Draw(100,100,bmp);
这样写
这样写
#4
Canvas.stretchdraw(strect, bitmap.picture.graphic);
#5
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再导入图片,图片有图像的啊,咋回事。
if PrintDialog1.Execute then
begin
Printer.BeginDoc;
Printer.Canvas.Draw(100,100,bmp);
Printer.EndDoc;
end;
bmp.SaveToFile('b.bmp');
这么写了,还是空白啊;
最后把bmp再导入图片,图片有图像的啊,咋回事。
#6
打印代码里 多加几个 字符串输出,看看它们是不是能打印出来
或者先把图片加载到Timage,再draw这个Timage1的内容
或者先把图片加载到Timage,再draw这个Timage1的内容
#7
打印图片,要有一个载体,传入打印机,才能打出来。
#8
定义的bmp算是载体了吧。
#9
如果加一下textout的话,就会把文本和二维码都打印出来了,啥原因呢?
#10
textout就是打印文本信息。
#11
我的印象这个问题从90年代以来一直有人在问,究其原因在于不同的绘制表面(GDI所谓的设备上下文,DC)所支持的点阵图形(windows中称之为光栅图,raster)绘制能力不一样,显示DC或者内存DC的支持能力最强,而打印机DC经常不支持BitBlt、StretchBlt(但是通常会支持DIB复制StretchDIBits),你需要用GetDeviceCaps确定一下你的打印机驱动所支持的DC绘制能力来决定使用哪个位图绘制函数。
#12
感谢楼上的大牛提供的思路,我尝试一下。
先结贴。
感谢大家。
先结贴。
感谢大家。
#13
bmp文件保存后,打开是空白的,这是什么原因
#1
检查一下Canvas是不是Printer 的
或者再保存一下bmp到文件,看看文件是否也是空白
或者再保存一下bmp到文件,看看文件是否也是空白
#2
检查一下Canvas是不是Printer 的
这句话怎么理解?
这句话怎么理解?
#3
Printer .Canvas.Draw(100,100,bmp);
这样写
这样写
#4
Canvas.stretchdraw(strect, bitmap.picture.graphic);
#5
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再导入图片,图片有图像的啊,咋回事。
if PrintDialog1.Execute then
begin
Printer.BeginDoc;
Printer.Canvas.Draw(100,100,bmp);
Printer.EndDoc;
end;
bmp.SaveToFile('b.bmp');
这么写了,还是空白啊;
最后把bmp再导入图片,图片有图像的啊,咋回事。
#6
打印代码里 多加几个 字符串输出,看看它们是不是能打印出来
或者先把图片加载到Timage,再draw这个Timage1的内容
或者先把图片加载到Timage,再draw这个Timage1的内容
#7
打印图片,要有一个载体,传入打印机,才能打出来。
#8
定义的bmp算是载体了吧。
#9
如果加一下textout的话,就会把文本和二维码都打印出来了,啥原因呢?
#10
textout就是打印文本信息。
#11
我的印象这个问题从90年代以来一直有人在问,究其原因在于不同的绘制表面(GDI所谓的设备上下文,DC)所支持的点阵图形(windows中称之为光栅图,raster)绘制能力不一样,显示DC或者内存DC的支持能力最强,而打印机DC经常不支持BitBlt、StretchBlt(但是通常会支持DIB复制StretchDIBits),你需要用GetDeviceCaps确定一下你的打印机驱动所支持的DC绘制能力来决定使用哪个位图绘制函数。
#12
感谢楼上的大牛提供的思路,我尝试一下。
先结贴。
感谢大家。
先结贴。
感谢大家。
#13
bmp文件保存后,打开是空白的,这是什么原因