Form上放一个简单的TImage然后载入一个位图打印代码如下 Printer.BeginDoc;
ScaleX := GetDeviceCaps(Printer.Handle, logPixelsX) div Screen.PixelsPerInch;
ScaleY := GetDeviceCaps(Printer.Handle, logPixelsY) div Screen.PixelsPerInch;
R := Rect(0, 0, Image1.Picture.Bitmap.Width * ScaleX, Image1.Picture.Bitmap.Height * ScaleY);
Printer.Canvas.StretchDraw(R,Image1.Picture.Bitmap); //打印出后, 这里图片不显示
Printer.Canvas.MoveTo(10 * ScaleX, 10 * ScaleY);
Printer.Canvas.LineTo(300 * ScaleX, 300 * ScaleY); //在这里画条线却可显示 Printer.EndDoc;非常奇怪,请大家帮忙看是为什么图片显示不出来
ScaleX := GetDeviceCaps(Printer.Handle, logPixelsX) div Screen.PixelsPerInch;
ScaleY := GetDeviceCaps(Printer.Handle, logPixelsY) div Screen.PixelsPerInch;
R := Rect(0, 0, Image1.Picture.Bitmap.Width * ScaleX, Image1.Picture.Bitmap.Height * ScaleY);
Printer.Canvas.StretchDraw(R,Image1.Picture.Bitmap); //打印出后, 这里图片不显示
Printer.Canvas.MoveTo(10 * ScaleX, 10 * ScaleY);
Printer.Canvas.LineTo(300 * ScaleX, 300 * ScaleY); //在这里画条线却可显示 Printer.EndDoc;非常奇怪,请大家帮忙看是为什么图片显示不出来
解决方案 »
- Delphi 处理XML 问题
- socket 问题
- 用delphi做一个档案管理系统问题:界面上如何设置输入文档控件,以及设型数据库的类型。学生在线急等。
- 如何监视某个文件中的文件:求ShellChangeNotifier或FileNotification的用法
- 请问如何动态的取得版本信息
- 一个数据库中两个表的比较方法
- if语句 SQL
- 高分求教大字段操做的问题,为什么有时候保存和取出来的东西不一样了?
- 我用indy组件中的Tidhttp控件来下载网页链接,如何能够得到链接的文件名称啊?
- 看了老鱼、X度空间的帖子,有些话不吐不快…………
- 类的特性怎么弄
- FASTRPROT 3.0 标题长度不定,但是如何做到居中
如果好的话
参考下Form的Print方法吧
var R: TRect;
begin
Printer.BeginDoc;
try
R := Rect(0,0,Image1.Picture.Width,Image1.Picture.Height);//请先在Image1里面载入图片。
Printer.Canvas.StretchDraw(R, Image1.Picture.Graphic);
finally
Printer.EndDoc;
end;
end;
假如我把Image1的Transparent属性变成True,那末可以打印出来,但是图片背景变成黑色,此外我使用CopyRect还是无法显示,没有高水平来回答这个问题吗?
下面代码为什么无法把图片打印出来, 线道是可以画出来
procedure TForm1.Button1Click(Sender: TObject);
var
ScaleX, ScaleY: Integer;
R: TRect;
begin
Printer.BeginDoc;
ScaleX := GetDeviceCaps(Printer.Handle, logPixelsX) div Screen.PixelsPerInch;
ScaleY := GetDeviceCaps(Printer.Handle, logPixelsY) div Screen.PixelsPerInch;
R := Rect(0, 0, Image1.Picture.Bitmap.Width * ScaleX, Image1.Picture.Bitmap.Height * ScaleY);
Printer.Canvas.CopyRect(R,Image1.Picture.Bitmap.Canvas, R);
Printer.Canvas.MoveTo(10 * ScaleX, 10 * ScaleY);
Printer.Canvas.LineTo(300 * ScaleX, 300 * ScaleY);
Printer.EndDoc;
end;