MFC 中操作图元文件,矢量图,WMF,EMF

在windows绘图中,有2种图形:矢量图和位图。如果要做图形的完美放大和缩小,应该使用矢量图。如果使用位图,当放大过大的时候,就会出现模糊的情况,因为位图的放大,是把1个像素绘制在多个像素点上,当大到一定地步,整个屏幕可以只有一个像素。

 

矢量图中较为常见的图元是:WMF和EMF文件,我们要在程序中输出图元,只需要使用下面的步骤:

在程序中输出图元:

CDC * pDC = GetDC();

HENHMETAFILE hemf = GetEnhMetaFile("F:\\1.emf");     //建立一个图元文件句柄hemf,保存从硬盘加载的emf文件格式的图元,图元名称是1.emf。也可以使用wmf格式的图元。
 if(hemf  !=  NULL)   //如果读取图元成功,则输出图元
 {
           CRect rect(0,0,100,100);    //建立一个矩形用来输出图元,矩形越大,图元会成比例放大,矩形越小,图元也会成比例缩小。矩形还可以实现图元的上下左右翻转,比如使用这样的矩形 rect(100,100,0,0)就会实现对角线翻转,使用rect(100,0,0,100)会实现左右翻转,使用rect(0,100,100,0)会实现上下翻转
           PlayEnhMetaFile(pDC->m_hDC,hemf,&rect);   //输出图元
           DeleteEnhMetaFile(hemf);      //删除图元句柄
 }

如果没有图元文件,需要自己创建图元文件,则可以使用2中方法,一种是CreateMetaFile().还有一种是使用CMetaFileDC来创建。使用CMetaFileDC更为简单:

使用CMetaFileDC创建图元步骤:创建图元DC---》创建图元---》使用图元DC绘图,构建图元的图形---》关闭图元DC,完成创建。

CDC * pDC = GetDC();

CMetaFileDC metaDC;            //创建图元DC                  
 metaDC.CreateEnhanced(pDC,"F:\\1.emf",NULL,NULL);  //创建图元对象
 metaDC.MoveTo(10,10);        //在图元对象上画图,如果不画图,图元是空的。自己绘制自己想要的图形
 metaDC.LineTo(30,50);
 metaDC.MoveTo(20,10);
 metaDC.LineTo(30,50);
 metaDC.Rectangle(0,0,10,10);
 metaDC.Rectangle(10,10,20,20);
 metaDC.CloseEnhanced();    //画完后,关闭图元DC,一个图元就生成了。

创建后,就可以使用输出图元函数,加载图元,输出图元了。

方法2:

CDC * pDC = GetDC();

  HDC hdcEMF = CreateEnhMetaFile(pDC->m_hDC,"F:\\1.emf",NULL,NULL);       //创建图元DC句柄

  HENHMETAFILE hemf; //创建图元文件对象
  
   MoveToEx(hdcEMF,100,100,NULL);//绘制图元图形内容,自己绘制自己想要的图形
   LineTo(hdcEMF,200,200);


   hemf= CloseEnhMetaFile(hdcEMF);           //关闭图元DC句柄
   DeleteEnhMetaFile(hemf);//关闭图元句柄,完成图元的创建

 

下面介绍下图形的信息,图形的信息是从百度上查找的:

计算机中显示的图形一般可以分为两大类——矢量图和位图。矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。例如一幅花的矢量图形实际上是由线段形成外框轮廓,由外框的颜色以及外框所封闭的颜色决定花显示出的颜色。由于矢量图形可通过公式计算获得,所以矢量图形文件体积一般较小。矢量图形最大的优点是无论放大、缩小或旋转等不会失真。Adobe公司的Freehand、Illustrator、Corel公司的CorelDRAW是众多矢量图形设计软件中的佼佼者。大名鼎鼎的Flash MX制作的动画也是矢量图形动画。
矢量图像,也称为面向对象的图像或绘图图像,在数学上定义为一系列由线连接的点。矢量文件中的图形元素称为对象。每个对象都是一个自成一体的实体,它具有颜色、形状、轮廓、大小和屏幕位置等属性。既然每个对象都是一个自成一体的实体,就可以在维持它原有清晰度和弯曲度的同时,多次移动和改变它的属性,而不会影响图例中的其它对象。这些特征使基于矢量的程序特别适用于图例和三维建模,因为它们通常要求能创建和操作单个对象。基于矢量的绘图同分辨率无关。这意味着它们可以按最高分辨率显示到输出设备上。
矢量图与位图最大的区别是,它不受分辨率的影响。因此在印刷时,可以任意放大或缩小图形而不会影响出图的清晰度
矢量图:是根据几何特性来绘制图形,矢量可以是一个点或一条线,矢量图只能靠软件生成,文件占用内在空间较小,因为这种类型的图像文件包含独立的分离图像,可以自由无限制的重新组合。它的特点是放大后图像不会失真,和分辨率无关,文件占用空间较小,适用于图形设计、文字设计和一些标志设计、版式设计等。
常用的矢量图格式
*.bw是包含各种像素信息的一种黑白图形文件格式。
*.cdr (CorelDraw)
*.cdr是CorelDraw中的一种图形文件格式。它是所有CorelDraw 应用程序中均能够使用的一种图形图像文件格式。
*.col(Color Map File)
*.col是由Autodesk Animator、Autodesk Animator Pro等程序创建的一种调色板文件格式,其中存储的是调色板中各种项目的RGB值。
*.dwg
*.dwg是AutoCAD中使用的一种图形文件格式。
*.dxb(drawing interchange binary)
*.dxb是AutoCAD创建的一种图形文件格式。
*.dxf(Autodesk Drawing Exchange Format)
*.dxf是AutoCAD中的图形文件格式,它以ASCII方式储存图形,在表现图形的大小方面十分精确,可被CorelDraw、3DS等大型软件调用编辑。
*.wmf(Windows Metafile Format)
*.wmf是Microsoft Windows中常见的一种图元文件格式,它具有文件短小、图案造型化的特点,整个图形常由各个独立的组成部分拼接而成,但其图形往往较粗糙,并且只能在M icrosoft Office中调用编辑。
*.emf(Enhanced MetaFile)
*.emf是由Microsoft公司开发的Windows 32位扩展图元文件格式。其总体设计目标是要弥补在Microsoft Windows 3.1(Win16)中使用的*.wmf文件格式的不足,使得图元文件更加易于使用。
*.eps(Encapsulated PostScript)
*.eps是用PostScript 语言描述的一种ASCII图形文件格式,在PostScript图形打印机上能打印出高品质的图形图像,最高能表示32位图形图像。该格式分为Pho toShop EPS格式(Adobe Illustrator Eps)和标准EPS格式,其中标准EPS格式又可分为图形格式和图像格式。值得注意的是,在PhotoShop中只能打开图像格式的EPS文件。*.ep s格式包含两个部分:第一部分是屏幕显示的低解析度影像,方便影像处理时的预览和定位;第二部分包含各个分色的单独资料。*.eps文件以D CS/CMYK形式存储,文件中包含CMYK四种颜色的单独资料,可以直接输出四色网片。但是,除了在PostScript打印机上比较可靠之外,*.e ps格式还有许多缺陷:首先,*.eps格式存储图像效率特别低;其次,*.eps格式的压缩方案也较差,一般同样的图像经*.tiff的LZW压缩后,要比* .eps的图像小3到4倍。
filmstrip
filmstrip即幻灯片,它是Premiere中的一种输出文件格式。Premiere将动画输出成一个长的竖条,竖条由独立方格组成。每一格即为一帧。每帧的左下角为时间编码,右下角为帧的编号。你可以在P hotoShop中调入该格式的文件,然后应用PhotoShop特有的处理功能对其进行处理。但是,千万不可改变filmstrip文件的大小,如果改变了,则这幅图片就不能再存回f ilmstrip格式了,也就不能再返回Premiere了。
*.ico(Icon file)
*.ico是Windows的图标文件格式。
*.iff(Image File Format)
*.iff是Amiga等超级图形处理平台上使用的一种图形文件格式,好莱坞的特技大片多采用该格式进行处理,可逼真再现原景。当然,该格式耗用的内存、外存等计算机资源也十分巨大。
*.lbm
*.lbm是Deluxe Paint中使用的一种图形文件格式,其编码方式类似于*.iff。
*.mag
*.mag是日本人常用的一种图形文件格式。
*.mac(Macintosh)
*.mac是Macintosh中使用的一种灰度图形文件格式,在Macintosh paintbrush中使用,其分辨率只能是720×567。
*.mpt(Macintosh Paintbrush)
*.mpt是Macintosh中使用的一种图形文件格式。
*.msk(Mask Data File)
*.msk是Animator Pro中的一种图形文件格式,其中包含一个位图图形。
*.opt(Optics Menu Settings File)/ *.twe(Tween Data File)
是Animator Pro创建的图形文件格式。
*.ply(Polygon File)
*.ply是Animator Pro创建的一种图形文件格式,其中包含用来描述多边形的一系列点的信息。
*.pbm/*.pgm/*.ppm (Portable Pixmap)
图形文件格式。
*.pcd(Kodak PhotoCD)
*.pcd是一种Photo CD文件格式,由Kodak公司开发,其他软件系统只能对其进行读取。该格式主要用于存储CD-ROM上的彩色扫描图像,它使用YCC色彩模式定义图像中的色彩。Y CC色彩模式是CIE色彩模式的一个变种。CIE色彩空间是定义所有人眼能观察到的颜色的国际标准。YCC和CIE色彩空间包含比显示器和打印设备的R GB色和CMYK色多得多的色彩。Photo CD图像大多具有非常高的质量,将一卷胶卷扫描为Photo CD文件的成本并不高,但扫描的质量还要依赖于所用胶卷的种类和扫描仪使用者的操作水平。
*.pcx(PC Paintbrush)/*.pcc
*.pcx最早是由Zsoft公司的PC Paintbrush图形软件所支持的一种经过压缩的PC位图文件格式。后来,Microsoft将PC Paintbrush移植到Windows环境中,*.pcx图像格式也就得到了更多的图形图像处理软件的支持。该格式支持的颜色数从最早的16色发展到目前的1 677万色。它采用行程编码方案进行压缩,带有一个128字节的文件头。
*.pic
*.pic是一种图形文件格式,其中包含了未经压缩的图像信息。
*.pict/*.pict2/*.pnt
*.pict文件格式主要应用于Mac机上,也可在安装了Quick Time的PC机上使用。该格式的文件不适用于打印(若在PostScript打印机上打印*.pict格式的文件,则会造成PostSlipt错误),而经常用于多媒体项目。* .pict也是Mac应用软件用于图像显示的格式之一。
*.psd(Adobe PhotoShop Document)/*.pdd
*.psd是PhotoShop中使用的一种标准图形文件格式,可以存储成RGB或CMYK模式,还能够自定义颜色数并加以存储。*.psd文件能够将不同的物件以层(L ayer)的方式来分离保存,便于修改和制作各种特殊效果。
*.pdd和*.psd一样,都是PhotoShop软件中专用的一种图形文件格式,能够保存图像数据的每一个细小部分,包括层、附加的蒙版通道以及其他内容,而这些内容在转存成其他格式时将会丢失。另外,因为这两种格式是P hotoShop支持的自身格式文件,所以PhotoShop能以比其他格式更快的速度打开和存储它们。唯一的遗憾是,尽管PhotoShop在计算过程中应用了压缩技术,但用这两种格式存储的图像文件仍然特别大。不过,用这两种格式存储图像不会造成任何的数据流失,所以当你在编辑过程中时,最好还是选择这两种格式存盘,以后再转换成占用磁盘空间较小、存储质量较好的其他文件格式。
*.pxr(PiXaR)
也许只有PIXAR工作站用户才比较了解*.pxr这种文件格式,该格式支持灰度图像和RGB彩色图像。可在PhotoShop中打开一幅由PIXAR工作站创建的* .pxr图像,也可以用*.pxr格式来存储图像文件,以便输送到工作站上。
*.ras (Sun Raster files)/ *.raw(Raw GrayScale)
图形文件格式。
Scitex CT
Scitex CT是在Scitex高档印前工作站上创建的一种图像文件格式,该工作站主要用于图像的编辑和分色。Scitex CT图像总是以CMYK模式打开,如果它们最终还要返回到Scitex系统,则请保持其CMYK模式。可利用PhotoShop来打开并编辑Scitex CT图像。
*.tga(Tagged Graphic)
*.tga是True Vision公司为其显示卡开发的一种图像文件格式,创建时间较早,最高色彩数可达32位,其中包括8位Alpha通道用于显示实况电视。该格式已经被广泛应用于P C机的各个领域,而且该格式文件使得Windows与3DS相互交换图像文件成为可能。你可以先在3DS中生成色彩丰富的*.tga文件,然后在Win dows中利用PhotoShop、Freeherd、Painter等应用软件来进行修改和渲染。
*.win
*.win是类似于*.tga的一种图形文件格式。
*.xbm (X BitMap)
*.xbm是一种图形文件格式。 --------------------- 本文来自 曾经一片 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/zengweicdut/article/details/8796264?utm_source=copy

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值