当我正在向我的应用程序添加自定义打印时,我决定使用 TMetafile 创建页面,然后使用它来预览和/或打印,但我发现缺少文档。
有没有什么好的资源来学习使用 TMetafile 和 TMetafileCanvas 的来龙去脉?
从我使用它的痛苦经历来看,使用 TMetaFile/Canvas 的来龙去脉更多地与元文件相关,而不是与 TMetaFile 和 TMetaFileCanvas 实现相关。Aka,您应该寻找有关 EMF(或 WMF)如何工作的信息。Delphi 实现只是调用 Windows 来完成我所理解的所有事情。
您可能希望更具体地了解您需要了解的内容,尽管超出了有关如何执行此操作的逐步指南。
其实比你想象的要简单...
这是我的一些代码:
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);
我用它在快速报告中打印元文件。
我自己并没有深入研究它,但我知道 QuickReports 代码在后台使用元文件来创建打印预览并发送到打印机。如果你有这方面的来源,它可能会有所帮助。