用 GDI 操作 EMF 文件[6]: GetEnhMetaFileHeader - 获取 EMF 的头文件

//增强图元文件的头文件结构 TEnhMetaHeader:
tagENHMETAHEADER = packed recordiType: DWORD;          {记录类型}nSize: DWORD;          {结构大小}rclBounds: TRect;      {外接矩形(单位是像素)}rclFrame: TRect;       {图片矩形(单位是 0.1 毫米)}dSignature: DWORD;     {文件签名}nVersion: DWORD;       {文件版本}nBytes: DWORD;         {文件尺寸}nRecords: DWORD;       {记录数}nHandles: Word;        {句柄数}sReserved: Word;       {保留}nDescription: DWORD;   {说明文本的长度}offDescription: DWORD; {说明文本的偏移量}nPalEntries: DWORD;    {调色板的元素数}szlDevice: TSize;      {分辨率(像素)}szlMillimeters: TSize; {分辨率(毫米)}cbPixelFormat: DWORD;  {}offPixelFormat: DWORD; {}bOpenGL: DWORD;        {}
end;
本例效果图:

o_8651.png
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}varHMetaFile: HENHMETAFILE; {EMF 文件句柄}{建立带说明的 EMF 文件}
procedure TForm1.FormCreate(Sender: TObject);
constPath = 'C:\Temp\MyMeateFile.emf';Description = 'ABCDE'; {当作 EMF 文件的说明}
varMetaFileDC: 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);
constn = #13#10;
varMetaHeaderSize: Integer;    {文件头大小}MetaHeader: PEnhMetaHeader; {文件头结构的指针}str: string;buf: array[Word] of Char;
beginMetaHeaderSize := GetEnhMetaFileHeader(HMetaFile, 0, nil);GetMem(MetaHeader, MetaHeaderSize);GetEnhMetaFileHeader(HMetaFile, MetaHeaderSize, MetaHeader);str := 'iType:          %d' + n +'nSize:          %d' + n +'rclBounds:      %d,%d,%d,%d' + n +'rclFrame:       %d,%d,%d,%d' + n +'dSignature:     %d' + n +'nVersion:       %d' + n +'nBytes:         %d' + n +'nRecords:       %d' + n +'nHandles:       %d' + n +//'sReserved:      %d' + n +'nDescription:   %d' + n +'offDescription: %d' + n +'nPalEntries:    %d' + n +'szlDevice:      %d,%d' + n +'szlMillimeters: %d,%d' + n +'cbPixelFormat:  %d' + n +'offPixelFormat: %d' + n +'bOpenGL:        %d';wvsprintf(buf, PChar(str), PChar(MetaHeader));ShowMessage(buf);FreeMem(MetaHeader);
end;{绘制在窗体}
procedure TForm1.Button2Click(Sender: TObject);
beginPlayEnhMetaFile(Canvas.Handle, HMetaFile, Rect(11,11,111,111));
end;{删除 EMF 文件句柄}
procedure TForm1.FormDestroy(Sender: TObject);
beginDeleteEnhMetaFile(HMetaFile);
end;end.

转载于:https://www.cnblogs.com/del/archive/2008/06/05/1214007.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mybatis学习(26):插入功能(插入数据)

目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer…

[Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例.

今天 不知自己装的centos 出现了什么问题, 一直卡在 启动界面, 找了半天没找见原因(最后时刻还是发现原因, 只因自己手欠一怒之下将centos删除了, 而且选择的是在本地磁盘也删除. ..让我哭一会..).. 于是便重新安装, 可是问题来了, 之前安装及配置好的zookeeper/redis/solr/tom…

Linux服务之nginx服务篇一(概念)

nginx官网:http://nginx.org/ 一、 nginx和apache的区别 Nginx: 1、轻量级,采用 C 进行编写,同样的 web 服务,会占用更少的内存及资源。 2、抗并发,nginx 以 epoll and kqueue 作为开发模型,处理…

基于Response的将数据导出到Excel

众所周知&#xff0c;Respone.Write()是输出Html流程序给用户的。考虑到一个标准的Web页面的是有多种呈现方式的&#xff0c; 例如:<meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> 这是以标准网页形式输出Html流 <meta htt…

mybatis学习(27):获取自增id方式一(在mapper中insert配置节点的属性)

目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer…

Linux下redis的安装及配置.

在上一篇[Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例. 我们已经将redis所需tar包拷贝到了linux下的root 根目录下, 接着我们只需要解压就可以了. 先将Redis的tar包拷贝到Linux下的根目录 然后解压到redis文件夹下:(先使用mkdir创建redis文件夹…

实战演习-用wse上传下载文件

jillzhang jillzhang126.com 这几天&#xff0c;光忙着写程序员职场了&#xff0c;对wse的翻译和学习没有太大的进展&#xff0c;这可不太好&#xff0c;毕竟咱还是靠技术混饭吃的&#xff0c;荒废了技术怎么行&#xff01;今天再上一盘有关wse的小菜&#xff0c;目的是想用ws…

mybatis学习(28):获取自增id方式二(在全局中配置setting选项)

目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer…

推荐一篇讲解各种debug技术的文章,相当不错!

讲述debug的各种工具和技巧的文章&#xff0c;相当不错 &#xff01; http://blog.csdn.net/agan4014/archive/2008/03/20/2199790.aspx 转载于:https://www.cnblogs.com/Winston/archive/2008/06/12/1218427.html

Linux下安装和配置solr/tomcat/IK分词器 详细实例一.

在这里一下讲解着三个的安装和配置, 是因为solr需要使用tomcat和IK分词器, 这里会通过图文教程的形式来详解它们的安装和使用. 注: 本文属于原创文章, 如若转载,请注明出处, 谢谢. 关于设置IK分词器的文章 IK分词器: Linux下IK分词器的安装及配置 1, 解压tar文件 首先我们在根…

【小虫虫】邮购笔记本的注意事项

最近很多网友问我从我这里买本本&#xff0c;怎么邮购。要是运输中磕了坏了丢了怎么办、小虫虫现在说一下。 问&#xff1a;我不在笔记本面前&#xff0c;我怎么验机&#xff1f; 虫&#xff1a;所有发货的笔记本虫虫都会亲自验机&#xff0c;帮助大家检测硬盘&#xff0c;检测…

mybatis学习(29):适用于没有自增的数据库

目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer…

Configuate Mac OSX $PATH

转载于:https://www.cnblogs.com/SunWentao/archive/2008/06/20/1226975.html

Linux下安装和配置solr/tomcat/IK分词器 详细实例二.

为了更好的排版, 所以将IK分词器的安装重启了一篇博文, 大家可以接上solr的安装一同查看. [Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例一: http://www.cnblogs.com/wang-meng/p/5814798.html 8, 打开浏览器查看solr可视化界面 到了这里solr就配置好了, 可是我…

理解正确的日志输出级别

原文链接&#xff1a;http://macrochen.iteye.com/blog/1399082 很多程序员都忽略了日志输出级别, 甚至不知道如何指定日志的输出级别. 相对于System.out来说, 日志框架有两个最大的优点就是可以指定输出类别(category)和级别(level). 对于日志输出级别来说, 下面是我们应该记住…

mybatis学习(30):修改功能

目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer…

如何在textarea中显示html代码

XML/HTML代码<html> <head> <meta http-equiv"Content-Type" content"text/html; charsetgb2312"> <title>新建网页</title> </head> <body> <table border"1" width"100%" id&qu…

ElasticSearch初体验之使用Java进行最基本的增删改查

好久没写博文了&#xff0c; 最近项目中使用到了ElaticSearch相关的一些内容&#xff0c; 刚好自己也来做个总结。 现在自己也只能算得上入门&#xff0c; 总结下自己在工作中使用Java操作ES的一些小经验吧。 本文总共分为三个部分&#xff1a; 一&#xff1a;ES相关基本概念及…

mybatis学习(31):修改部分字段(有外键,先查询,再修改)

目录结构 com.geyao.mybatis.mapper BlogMapper类 package com.geyao.mybatis.mapper;import java.util.List; import java.util.Map;import org.apache.ibatis.annotations.Param;import com.geyao.mybatis.pojo.Blog;public interface BlogMapper {Blog selectBlog(Integer…

vb 垂直滚动条定位

Sub TreeFill3(cTime As String, ByVal cKey As String) Tree3.Nodes.Clear 循环填充tree1控件内容 Dim c As String Dim cNode As Node Dim cSql As String Dim cRec As rdoResultset Dim cRec1 As rdoResultset Dim i As Integer cS…