我正在使用RAD Studio XE6,我有一个简单的火猴形式,用于打印图像。我认为如果我设法创建预览功能以在打印之前显示最终图像,那将是一个好主意。为此,我尝试使用TImage组件,而不是将我的数据发送到打印机画布,而是使用类似下面的代码将其发送到图像画布。
ImageViewer1.Canvas.Font.Size := 15;
ImageViewer1.Canvas.Font.Family := 'Arial';
ImageViewer1.Canvas.Font.Style := [TFontStyle.fsbold];
ImageViewer1.Canvas.Fill.Color := claBlack;
ImageViewer1.Canvas.Fill.Kind := TBrushKind.Solid;
s := 'Test Print';
l := Round((ImageViewer1.Width - ImageViewer1.Canvas.TextWidth(s)) / 99);
t := Round(ImageViewer1.Canvas.TextHeight(s)*3/100);
r := l + Round(ImageViewer1.Canvas.TextWidth(s));
b := t + Round(ImageViewer1.Canvas.TextHeight(s));
ImageViewer1.Canvas.FillText(TRectF.Create(l, t, r, b), s, false, 1,
[TFillTextFlag.RightToLeft], TTextAlign.Leading, TTextAlign.Leading);
事情是,最终我的TImage组件中没有显示任何内容。我做错了什么?
答案 0 :(得分:2)
您创建的内容不是打印预览。
打印预览显示方向,边距等。如果您想创建打印预览,您应该这样做:
您可以为发送到打印机的任何内容创建自己的打印预览。 只需用一个TImage组件的Canvas替换Printer.Canvas,它放在一个空的表单上。
换句话说:创建一个新表单,在其上放置一个TImage(将其设置为alClient),然后修改您的打印例程以接受TCanvas作为参数。这样,您就可以对打印机和TImage画布使用相同的例程。