1,183
社区成员
发帖
与我相关
我的任务
分享
metafile_dpix := GetDeviceCaps(Self.Canvas.Handle, LOGPIXELSX);
printer_dpix := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
metafile_dpiy := GetDeviceCaps(Self.Canvas.Handle, LOGPIXELSY);
printer_dpiy := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
mf1 := TMetafile.Create;
Printer.Orientation := poPortrait;
w := Round( Printer.PageWidth * 0.6 * metafile_dpix / printer_dpix );
h := Round( Printer.PageHeight * 0.6 * metafile_dpiy / printer_dpiy );
mc1 := TMetafileCanvas.Create(mf1, 0); //图元文件mf1的画布
mf1.Width := w;
mf1.Height := h;
mc1.Pen.Width := 2;
mc1.Font.Size := 12;
mc1.MoveTo(0, 0); //边框
mc1.LineTo(w, 0);
mc1.LineTo(w, h);
mc1.LineTo(0, h);
mc1.LineTo(0, 0);
mc1.MoveTo(0, 0); //对角线
mc1.LineTo(w, h);
mc1.MoveTo(0, h);
mc1.LineTo(w, 0);
mc1.free;
Printer.BeginDoc; //打印
Printer.NewPage;
Printer.Canvas.TextOut(Round(Printer.PageWidth * 0.15), Round(Printer.PageHeight * 0.15), '-1');
//目的区域外边框
Printer.Canvas.MoveTo(Round(Printer.PageWidth * 0.2), Round(Printer.PageHeight * 0.2));
Printer.Canvas.LineTo(Round(Printer.PageWidth * 0.8), Round(Printer.PageHeight * 0.2));
Printer.Canvas.LineTo(Round(Printer.PageWidth * 0.8), Round(Printer.PageHeight * 0.8));
Printer.Canvas.LineTo(Round(Printer.PageWidth * 0.2), Round(Printer.PageHeight * 0.8));
Printer.Canvas.LineTo(Round(Printer.PageWidth * 0.2), Round(Printer.PageHeight * 0.2));
Printer.Canvas.StretchDraw(Rect(Round(Printer.PageWidth * 0.2), Round(Printer.PageHeight * 0.2), Round(Printer.PageWidth * 0.8), Round(Printer.PageHeight * 0.8)), mf1);
Printer.EndDoc;
mf1.Free;