急求如何打印paintbox上的图形

时间:2021-11-04 11:12:31
现在在form上建立一个paintbox,想把这个paintbox上的图形打印出来,请问高手如何做,最好能给点详细的代码!

10 个解决方案

#1


打代码40分起。

#2


引用 1 楼 ecjtu5208 的回复:
打代码40分起。

50分行了吧

#3


呵呵,75,马上给你贴代码。

#4


坐等下班。 急求如何打印paintbox上的图形

#5


引用 4 楼 ecjtu5208 的回复:
坐等下班。

大哥,75了,我就剩75分了。

#6


呵呵,知道你就75。代码来了
(ps:在form上放一个image控件,做为中转。当然你可以动态创建一个bitmap来接收一下paintbox上的内容,不过我这里直接用来image并且大小和paintbox一样,用来暂存一下paintbox的内容.)

很简单,Form上就3个控件,一个paintbox1,一个image1大小同paintbox1,和一个button1。

uses printers;                  //需要引用printers这个单元。写在interface下。

var                              
 printer1:tprinter;
 printdialog:tprintdialog;  


  procedure TForm1.Button1Click(Sender: TObject);
var
  printrect:TRect;
begin
  Image1.Canvas.CopyRect(Image1.ClientRect,PaintBox1.canvas,PaintBox1.ClientRect);
  printrect:=Rect(50,50,3000,1200);     //这个可以根据实际显示情况进行调整。   
  printer1:=TPrinter.Create;
  printdialog:=tprintdialog.Create(self);
  if printdialog.Execute then
  begin
  printer1.BeginDoc;
  printer1.Canvas.StretchDraw(printrect,Image1.Picture.Graphic);
  printer1.EndDoc;
  end;
end;

#7


这个代码都直接运行过的,没问题,有什么问题再说吧。
急求如何打印paintbox上的图形

#8


var
  bmp:TBitmap;
begin
   bmp:=TBitmap.create;
   bmp.width:=paintbox.width;
   bmp.height:=paintbox.height;
   bmp.canvas.copyrect(bmp.canvas.cliprect,panitbox.canvas,paintbox.canvas.cliprect);
   ///此时bmp就是你要的图
   剩下的就是打印图片了,这个应该没难度吧 自己来吧

end;

#9


引用 6 楼 ecjtu5208 的回复:
呵呵,知道你就75。代码来了
(ps:在form上放一个image控件,做为中转。当然你可以动态创建一个bitmap来接收一下paintbox上的内容,不过我这里直接用来image并且大小和paintbox一样,用来暂存一下paintbox的内容.)

很简单,Form上就3个控件,一个paintbox1,一个image1大小同paintbox1,和一个button1。
Delphi(P……

printrect:=Rect(50,50,3000,1200);     //这个可以根据实际显示情况进行调整。

这个坐标是整个屏幕的坐标吗?能不能以form或者image为参照呢?

#10


之前我有试过,如果用form或者image的宽度高度来打印,很小,感觉看不清。
你觉得哪样好,你就用哪样。关键看你了。

#1


打代码40分起。

#2


引用 1 楼 ecjtu5208 的回复:
打代码40分起。

50分行了吧

#3


呵呵,75,马上给你贴代码。

#4


坐等下班。 急求如何打印paintbox上的图形

#5


引用 4 楼 ecjtu5208 的回复:
坐等下班。

大哥,75了,我就剩75分了。

#6


呵呵,知道你就75。代码来了
(ps:在form上放一个image控件,做为中转。当然你可以动态创建一个bitmap来接收一下paintbox上的内容,不过我这里直接用来image并且大小和paintbox一样,用来暂存一下paintbox的内容.)

很简单,Form上就3个控件,一个paintbox1,一个image1大小同paintbox1,和一个button1。

uses printers;                  //需要引用printers这个单元。写在interface下。

var                              
 printer1:tprinter;
 printdialog:tprintdialog;  


  procedure TForm1.Button1Click(Sender: TObject);
var
  printrect:TRect;
begin
  Image1.Canvas.CopyRect(Image1.ClientRect,PaintBox1.canvas,PaintBox1.ClientRect);
  printrect:=Rect(50,50,3000,1200);     //这个可以根据实际显示情况进行调整。   
  printer1:=TPrinter.Create;
  printdialog:=tprintdialog.Create(self);
  if printdialog.Execute then
  begin
  printer1.BeginDoc;
  printer1.Canvas.StretchDraw(printrect,Image1.Picture.Graphic);
  printer1.EndDoc;
  end;
end;

#7


这个代码都直接运行过的,没问题,有什么问题再说吧。
急求如何打印paintbox上的图形

#8


var
  bmp:TBitmap;
begin
   bmp:=TBitmap.create;
   bmp.width:=paintbox.width;
   bmp.height:=paintbox.height;
   bmp.canvas.copyrect(bmp.canvas.cliprect,panitbox.canvas,paintbox.canvas.cliprect);
   ///此时bmp就是你要的图
   剩下的就是打印图片了,这个应该没难度吧 自己来吧

end;

#9


引用 6 楼 ecjtu5208 的回复:
呵呵,知道你就75。代码来了
(ps:在form上放一个image控件,做为中转。当然你可以动态创建一个bitmap来接收一下paintbox上的内容,不过我这里直接用来image并且大小和paintbox一样,用来暂存一下paintbox的内容.)

很简单,Form上就3个控件,一个paintbox1,一个image1大小同paintbox1,和一个button1。
Delphi(P……

printrect:=Rect(50,50,3000,1200);     //这个可以根据实际显示情况进行调整。

这个坐标是整个屏幕的坐标吗?能不能以form或者image为参照呢?

#10


之前我有试过,如果用form或者image的宽度高度来打印,很小,感觉看不清。
你觉得哪样好,你就用哪样。关键看你了。