Delphi 抓图后打印这张图片,弹出打印属性框

如果用窗体.print打印的话,会导致一些控件打印不出来,比如下拉列表,还有打印TChart也会导致只打印TChart的原始状态,而不会打印有数据的TChart

所以我就想到了先抓图,后打印

抓图后下拉列表和TChart都正常显示了,可是还有一点不好,就是下拉列表中的值是显示不到的,但Label可以显示,所以可以在打印的时候把下拉列表的值换成Label来显示

代码:

procedure TFrmLltj.Button1Click(Sender: TObject);
var
FormImage: TBitmap;
MyImage:TImage;
r1:TRect;
begin //52
grp2_lbl_lk.Caption := cbb_xzlk.Text; //选择的路口赋

grp2_lbl_qs_n.Caption := cbb_qs_n.Text + ' 年'; //选择的年
grp2_lbl_qs_y.Caption := cbb_qs_y.Text + ' 月'; //选择的月
grp2_lbl_qs_r.Caption := cbb_qs_r.Text + ' 日'; //选择的日
grp2_lbl_qs_s.Caption := cbb_qs_s.Text + ' 时'; //选择的时
grp2_lbl_qs_f.Caption := cbb_qs_f.Text + ' 分'; //选择的分

grp2_lbl_js_n.Caption := cbb_js_n.Text + ' 年'; //选择的年
grp2_lbl_js_y.Caption := cbb_js_y.Text + ' 月'; //选择的月
grp2_lbl_js_r.Caption := cbb_js_r.Text + ' 日'; //选择的日
grp2_lbl_js_s.Caption := cbb_js_s.Text + ' 时'; //选择的时
grp2_lbl_js_f.Caption := cbb_js_f.Text + ' 分'; //选择的分

GroupBox1.Visible := False; //打印起始时隐藏GroupBox1

FormImage := GetFormImage; //抓图
MyImage := TImage.Create(nil); //

try //53
Clipboard.Assign(FormImage);
MyImage.Picture.Assign(Clipboard);

r1:=Rect(50,50,1500,1500); //设置x坐标,y坐标,横大小,竖大小
if printdialog1.execute then //弹出打印属性框
begin //54
printer.begindoc; //开始打印
Printer.Canvas.StretchDraw(r1,MyImage.Picture.Graphic); //打印中
//Printer.Canvas.draw(0,0,MyImage.Picture.Bitmap);
printer.enddoc; //结束打印
end; //54

//MyImage.Picture.SaveToFile('D:/temp.bmp');
finally
begin //55
MyImage.Free; //释放资源
FormImage.Free;//释放资源
GroupBox1.Visible := True; //打印结束后显示GroupBox1
end; //55
end; //53
end; //52


黑色头发:http://heisetoufa.iteye.com/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值