zoukankan      html  css  js  c++  java
  • 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....

  • 相关阅读:
    apache mina框架
    架构学习笔记
    接口抽象类
    继承是共用,不是复制
    线程安全的单例模式还需要对成员变量的set get方法设置锁么
    受检查异常要求try catch,new对象时,就会在堆中创建内存空间,创建的空间包括各个成员变量类型所占用的内存空间
    myeclipse 写java代码提示 dead code 原因
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils
    android内存优化发展——使用软引用
    cocos2dx3.1.1+cocosstudio+lua问题总结
  • 原文地址:https://www.cnblogs.com/aoyihuashao/p/1724824.html
Copyright © 2011-2022 走看看