10 个解决方案
#1
打代码40分起。
#2
50分行了吧
#3
呵呵,75,马上给你贴代码。
#4
坐等下班。
#5
大哥,75了,我就剩75分了。
#6
呵呵,知道你就75。代码来了
(ps:在form上放一个image控件,做为中转。当然你可以动态创建一个bitmap来接收一下paintbox上的内容,不过我这里直接用来image并且大小和paintbox一样,用来暂存一下paintbox的内容.)
很简单,Form上就3个控件,一个paintbox1,一个image1大小同paintbox1,和一个button1。
(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
这个代码都直接运行过的,没问题,有什么问题再说吧。
#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;
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
printrect:=Rect(50,50,3000,1200); //这个可以根据实际显示情况进行调整。
这个坐标是整个屏幕的坐标吗?能不能以form或者image为参照呢?
#10
之前我有试过,如果用form或者image的宽度高度来打印,很小,感觉看不清。
你觉得哪样好,你就用哪样。关键看你了。
你觉得哪样好,你就用哪样。关键看你了。
#1
打代码40分起。
#2
50分行了吧
#3
呵呵,75,马上给你贴代码。
#4
坐等下班。
#5
大哥,75了,我就剩75分了。
#6
呵呵,知道你就75。代码来了
(ps:在form上放一个image控件,做为中转。当然你可以动态创建一个bitmap来接收一下paintbox上的内容,不过我这里直接用来image并且大小和paintbox一样,用来暂存一下paintbox的内容.)
很简单,Form上就3个控件,一个paintbox1,一个image1大小同paintbox1,和一个button1。
(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
这个代码都直接运行过的,没问题,有什么问题再说吧。
#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;
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
printrect:=Rect(50,50,3000,1200); //这个可以根据实际显示情况进行调整。
这个坐标是整个屏幕的坐标吗?能不能以form或者image为参照呢?
#10
之前我有试过,如果用form或者image的宽度高度来打印,很小,感觉看不清。
你觉得哪样好,你就用哪样。关键看你了。
你觉得哪样好,你就用哪样。关键看你了。