{******************************************************************
** Method of printing using PEprintgraphEx.
******************************************************************}
procedure TForm1.FormClick(Sender: TObject);
var
nLogPx: Integer;
nLogPy: Integer;
ChartSizeX: Single;
ChartSizeY: Single;
begin
Printer.Title := 'Printing ProEssentials';
Printer.BeginDoc;
Printer.Canvas.TextOut(100,100, 'Hello World!');
{'** Get DPI info **'}
nLogPx := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
nLogPy := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
{'** Get Size in Inches **'}
ChartSizeX := Printer.PageWidth / nLogPx;
ChartSizeY := Printer.PageHeight / nLogPy;
{'** Convert to Himetrics, 1/100th millimeters **'}
ChartSizeX := ChartSizeX * 2540.0 / 2.0;
ChartSizeY := ChartSizeY * 2540.0 / 2.0;
ChartSizeX := ChartSizeX - 1270; {reduce horz size by margin, 1270 is 1/2 inch}
{'** Output image #1 **'}
PEprintgraphEx(PESGraph1.hObject, Printer.Handle, Floor(ChartSizeX), Floor(ChartSizeY), 1270, 1270);
{'** just place same image, but could be from another control**}
PEprintgraphEx(PESGraph1.hObject, Printer.Handle, Floor(ChartSizeX), Floor(ChartSizeY), Floor(ChartSizeX) + 1270, Floor(ChartSizeY));
Printer.EndDoc;
{' ** reset image to current aspect ratio **'}
PEresetimage(PESGraph1.hObject, 0, 0);
end;
{******************************************************************
** Lowest level, plays metafile to device context.
** Above code internally calls similar code when PrintDpi = 0
******************************************************************}
procedure TForm1.FormClick(Sender: TObject);
var
hMeta: Integer;
oldMM: Integer;
lresult: Longbool;
wSize: Integer;
hSize: Integer;
pt: TPoint;
begin
Printer.BeginDoc;
Printer.Canvas.TextOut(100,100, 'Hello World!');
{'** set mapping mode MM_TEXT **'}
oldMM := SetMapMode(Printer.Handle, 1);
{'** Set viewport org and extents **'}
hSize := Printer.PageHeight div 2;
wSize := Printer.PageWidth div 2;
lresult := SetViewportOrgEx(Printer.Handle, 0, hSize, @pt);
lresult := SetViewportExtEx(Printer.Handle, wSize, hSize, @pt);
{'** reset image shape to match shape defined by SetViewportExt **'}
PEresetimageEx(PESGraph1.hObject, wSize, hSize, 0, hsize);
hMeta := PEgetmeta(PESGraph1.hObject);
PEplaymetafile(PESGraph1.hObject, Printer.Handle, hMeta);
{'** just place same image, but could be from another control**}
lresult := SetViewportOrgEx(Printer.Handle, wSize, hSize, @pt);
lresult := SetViewportExtEx(Printer.Handle, wSize, hSize, @pt);
PEplaymetafile(PESGraph1.hObject, Printer.Handle, hMeta);
Printer.EndDoc;
{' ** reset mapping mode **'}
SetMapMode(Printer.Handle, oldMM);
{' ** reset image to current aspect ratio **'}
PEresetimage(PESGraph1.hObject, 0, 0);
end;
|