Page 1 of 1

Quality printing

Posted: Fri Aug 22, 2008 8:34 am
by 10545639
Hi,
I have a problem with printing/export. Maybe it is quite simple, but i don't see the solution...
I have a TChart and a Chart on it. What is the best way to export a hires Image of the Chart for printing? Let's say the Chart is 600x400 Pixels on the screen but i want to have a 6x4 inch image on my printer with 600 DPI so I need a 3600x2400 pixel image. (I have an editor where this image will be inserted.)

I can use the Metafile, but the some of the enhanced effects are not exported. I can simply make a 3600x2400 TChart, but then the Fonts are way to small. Simply "blowing up" the 600x400 image makes poor quality. Do you have a solution? Thanks for your Help!
Andreas

Posted: Fri Aug 22, 2008 9:19 am
by yeray
Hi Andreas,

Could you take a look at "Printing better article"?

Posted: Fri Aug 22, 2008 9:57 am
by 10545639
Yes, thats all OK, thank you! I use the Metafile allready. But there are a few features that are not possible with Metafiles, right? Transparency and Antialiasing for example. I would like to use GDI+ (looks very smart and smooth!), but it is not possible to export the GDI+-Features to the printer or even to an editor, right? So it would be nice to have a feature to generate a hires image with printer-resolution (png of tiff or gif) of the chart.

Andreas

Posted: Tue Aug 26, 2008 9:45 am
by Pep
Hello Andreas,

as you said, there's not a way to send directly GDI+ features to the printer, we'll consider it as a wish for further releases. But to be able to print Charts with transparency you can always generate a temporary metafile, copy the Chart to it and print directly from the metafile, ex :

Code: Select all

procedure TForm1.Button1Click(Sender: TObject);
var tmpMeta: TMetaFile;
    OldColor : TColor;
begin
    Chart1.BevelOuter := bvNone;
    OldColor := Chart1.Color;
    Chart1.Color := clNone;
    tmpMeta := Chart1.TeeCreateMetafile(true,Chart1.ClientRect);
    try
        Printer.Orientation := poLandscape;
        Printer.BeginDoc;
        try
            Printer.Canvas.StretchDraw(Rect(1,1,Printer.PageWidth - 1,
                Printer.PageHeight - 1),tmpMeta);
        finally
            Printer.EndDoc;
        end;
    finally
        tmpMeta.Free;
        Chart1.BevelOuter := bvRaised;
        Chart1.Color := OldColor;
    end;
end;
Or you can always export to bmp, or print from bmp file.