• Windows程序设计 读书笔记 元文件


    一、元文件。

      由一系列与图形函数调用等价的二进制记录组成,这些记录一般用于绘制直线、曲线、区域、文本等。

    二、“画图程序”创建位图,“绘图程序”创建元文件。

      元文件比位图占空间少,而且比位图更加设备无关。

    三、老式元文件格式。扩展名为.WMF

      HDC hdcMeta =  CreateMetaFile( LPCTSTR lpszFile // file name);

      //创建元文件,保存在file路径里,扩展名为.WMF

      //如果参数为NULL,创建在内存中,

      Ellipse(hdcMeta,0,0,100,100);//然后用hdcMeta绘图。

      HMETAFILE hmf = CloseMetaFile(hdcMeta);//关闭,得到句柄

      PlayMetaFile(hdc,hmf);//在hdc上,绘制hmf

      DeleteMetaFile(hmf);

      hmf = GetMetaFile(filename);//读取元文件。

      GetDeviceCaps(hmf,HORZSIZE);//这类的GetDeviceCaps函数可以获得元文件属性。

      HENHMETAFILE CopyEnhMetaFile( HENHMETAFILE hemfSrc, LPCTSTR lpszFile);//拷贝到 lpszFile,为空到内存

      元文件可以作为用户自定义资源:SetMetaFileBitsEx

    四、增强型元文件,扩展名为.EMF  

      HDC hdcMeta =  CreateEnhMetaFile(

               HDC hdcRef, // handle to reference DC

               LPCTSTR lpFilename, // file name

               CONST RECT *lpRect, // bounding rectangle

              LPCTSTR lpDescription // description string

              );

      //创建元文件,保存在file路径里,扩展名为.EMF

      //如果参数为NULL,创建在内存中,

      Ellipse(hdcMeta,0,0,100,100);//然后用hdcMeta绘图。

      HMETAFILE hmf = CloseEnhMetaFile(hdcMeta);//关闭,得到句柄

      PlayEnhMetaFile(hdc,hmf,&rect);//在hdc上,绘制hmf,并缩放到RECT范围内

      DeleteEnhMetaFile(hmf);

      GetMetaFile(filename);//读取元文件。

      元文件可以作为用户自定义资源:SetMetaFileBitsEx

      增强型元文件比老式元文件最大的改进是增加了文件头信息。

      获取文件头信息:UINT GetEnhMetaFileHeader( HENHMETAFILE hemf, // handle to enhanced metafile UINT cbBuffer, // size of buffer LPENHMETAHEADER emh // data buffer);

      cxImage = emh.rclBounds.right - emh.rclBounds.left ;//元文件长
         cyImage = emh.rclBounds.bottom - emh.rclBounds.top ;//元文件宽

      枚举 BOOL EnumEnhMetaFile( HDC hdc, // handle to DC HENHMETAFILE hemf, // handle to enhanced metafile ENHMFENUMPROC lpEnhMetaFunc, // callback function LPVOID lpData, // callback-function data CONST RECT *lpRect); // bounding rectangle

      //对元文件里面的每个对象,执行 lpEnhMetaFunc 函数里的操作。 

    五、元文件数据格式。

      跟一般的文件一样。十六进制:对象类型,类型长度,类型内容。

      类型定义可查看MSDN:EMR....

  • 相关阅读:
    视音频开发测试文件下载
    H.264 中的Annex B格式和AVCC格式
    FFmpeg——命令笔记
    Gamma 矫正
    头文件 <string.h> <cstring> <string> 区别
    Serializable
    Oracle学习
    JDBC
    Servlet为主理解cookie,session,filter
    javaweb复习-环境篇
  • 原文地址:https://www.cnblogs.com/aoyihuashao/p/1724824.html
Copyright © 2020-2023  润新知