1

当我正在向我的应用程序添加自定义打印时,我决定使用 TMetafile 创建页面,然后使用它来预览和/或打印,但我发现缺少文档。

有没有什么好的资源来学习使用 TMetafile 和 TMetafileCanvas 的来龙去脉?

4

3 回答 3

2

从我使用它的痛苦经历来看,使用 TMetaFile/Canvas 的来龙去脉更多地与元文件相关,而不是与 TMetaFile 和 TMetaFileCanvas 实现相关。Aka,您应该寻找有关 EMF(或 WMF)如何工作的信息。Delphi 实现只是调用 Windows 来完成我所理解的所有事情。

您可能希望更具体地了解您需要了解的内容,尽管超出了有关如何执行此操作的逐步指南。

于 2009-01-21T16:55:33.797 回答
2

其实比你想象的要简单...

这是我的一些代码:

var
   m: TMetafile;
   mc: TMetafileCanvas;
begin
   m := TMetafile.Create;
   m.Width := 1000;
   m.Height := 1000;
   mc := TMetafileCanvas.Create(m, 0);
   //use mc just like any canvas...
   mc.Free;
   // you can use m for anything you want, preview, print, save ...etc.
end;

要将元文件复制到剪贴板:

Clipboard.Assign(m);

保存到 emf 文件:

m.SaveToFile(filename);

我用它在快速报告中打印元文件。

于 2009-01-30T16:38:53.390 回答
0

我自己并没有深入研究它,但我知道 QuickReports 代码在后台使用元文件来创建打印预览并发送到打印机。如果你有这方面的来源,它可能会有所帮助。

于 2009-01-21T17:14:59.483 回答