再用 CreateEnhMetaFile 函数建立 EMF 文件时可以同时写入描述性说明;
用 GetEnhMetaFileDescription 函数可以读出 EMF 文件的说明文本.
本例给的说明文本非常简单, 不过标准的说明文本的格式应该是: 程序名#0文件标题#0#0
用 GetEnhMetaFileDescription 函数可以读出 EMF 文件的说明文本.
本例给的说明文本非常简单, 不过标准的说明文本的格式应该是: 程序名#0文件标题#0#0
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} var HMetaFile: HENHMETAFILE; {EMF 文件句柄} {建立带说明的 EMF 文件} procedure TForm1.FormCreate(Sender: TObject); const Path = 'C:\Temp\MyMeateFile.emf'; Description = 'ABCDE'; {当作 EMF 文件的说明} var MetaFileDC: HDC; begin {建立并写入说明} MetaFileDC := CreateEnhMetaFile(0, PChar(Path), nil, PChar(Description)); {绘图} Rectangle(MetaFileDC, 11, 11, 111, 111); {结束编辑、保存文件, 并返回文件句柄} HMetaFile := CloseEnhMetaFile(MetaFileDC); {删除 DC} DeleteObject(MetaFileDC); end; {读取 EMF 文件的说明} procedure TForm1.Button1Click(Sender: TObject); var DescriptionSize: Integer; {说明段的大小} DescriptionBuf: PChar; {接受说明的内存指针} begin {获取大小} DescriptionSize := GetEnhMetaFileDescription(HMetaFile, 0, nil); {分配内存} GetMem(DescriptionBuf, DescriptionSize); {获取说明} GetEnhMetaFileDescription(HMetaFile, DescriptionSize, DescriptionBuf); {显示说明} ShowMessage(DescriptionBuf); {ABCDE} {释放内存} FreeMem(DescriptionBuf); end; {绘制在窗体} procedure TForm1.Button2Click(Sender: TObject); begin PlayEnhMetaFile(Canvas.Handle, HMetaFile, Rect(11,11,111,111)); end; {删除 EMF 文件句柄} procedure TForm1.FormDestroy(Sender: TObject); begin DeleteEnhMetaFile(HMetaFile); end; end.
分类:
API 图像函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧