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

xiaoxiao2026-05-01  0

如果用窗体.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; //53end; //52 黑色头发:http://heisetoufa.iteye.com/
转载请注明原文地址: https://www.6miu.com/read-5048043.html

最新回复(0)