分享

一些关于GDI+的文字——图像、位图和metafile

 shaolong007 2005-11-22
标  题: 一些关于GDI+的文字——图像、位图和metafile
发信站: 浙江大学海纳百川站 (Tue Oct 26 11:54:51 2004), 转信

Image 类是抽象基类,它提供了处理光栅图像(位图)和矢量图像(图元文件)的方法
。Bitmap 类和 Metafile 类都从 Image 类继承。Bitmap 类提供了用于加载、保存和处
理光栅图像的其他方法,因而扩展了 Image 类的功能。Metafile 类提供了用于记录和
检查矢量图像的其他方法,因而扩展了 Image 类的功能。

Bitmap类和文件中的位图有关,GDI+支持的图像文件格式有BMP,GIF,JPEG,EXIF,PN
G,TIFF等,大大加强了GDI原有狂爆的打开图像功能……

GDI+ 提供 Metafile 类,以便您能够记录和显示图元文件。图元文件,也称为矢量图像
,是一种存储为一系列绘图命令和设置的图像。Metafile 对象记录的命令和设置可以存
储在内存中或保存到文件或流。

GDI+ 能够显示用以下格式存储的图元文件:
Windows 图元文件 (WMF)
增强性图元文件 (EMF)
EMF+

GDI+ 能够用 EMF 和 EMF+ 格式记录图元文件,但不能使用 WMF 格式。

EMF+ 是 EMF 的扩展,可存储 GDI+ 记录。EMF+ 格式有两种变体:“EMF+ 唯一”和“
EMF+ 双重”。“EMF+ 唯一”图元文件只包含 GDI+ 记录。这样的图元文件可由 GDI+
显示,但不可由 GDI 显示。“EMF+ 双重”图元文件包含 GDI+ 和 GDI 记录。“EMF+
双重”图元文件的每个 GDI+ 记录与一个备用 GDI 记录成对出现。这样的图元文件可由
GDI+ 或 GDI 显示。

您可以使用 Bitmap 类来加载和显示光栅图像,还可以利用 Metafile 类来加载和显示
矢量图像。Bitmap 和 Metafile 类从 Image 类中继承。要显示矢量图像,需要有 Gra
phics 对象和 Metafile 对象。要显示光栅图像,需要有 Graphics 对象和 Bitmap 对
象。Graphics 对象提供了 DrawImage 方法,该方法接收 Metafile 或 Bitmap 对象作
为参数。

下面的示例从文件 Climber.jpg 构造 Bitmap 对象并显示位图。图像左上角的目标点
(10,10) 在第二个和第三个参数中指定。

     Bitmap* myBitmap = new Bitmap(L"Climber.jpg");
     myGraphics.DrawImage(myBitmap, 10, 10);

Bitmap 类提供了 Clone 方法,可用于制作现有 Bitmap 对象的副本。Clone 方法带有
源矩形参数,可用于指定要复制的原始位图的部分。
优越的图像裁剪和图像缩放

您可以使用 Graphics 类的 DrawImage 方法来绘制并定位矢量图像和光栅图像。DrawI
mage 是一种重载方法,因此您有数种方式为它提供参数。DrawImage 方法的一种变体接
收 Bitmap 对象和 Rectangle 对象。该矩形指定了绘图操作的目标,即它指定了将要在
其内绘图的矩形。如果目标矩形的大小与原始图像的大小不同,原始图像将进行缩放,
以适应目标矩形。

另外还提供了强大的图像缩放模式,使高精度缩放图像成为现成工具,而不需要在图像
版上询问缩放图像需要怎样怎样了。大家看看下面这个激动人心的函数定义吧:
     Status Graphics::SetInterpolationMode(
       InterpolationMode interpolationMode
     );
其中InterpolationMode是这样的一个枚举:
     enum InterpolationMode{
       InterpolationModeInvalid = QualityModeInvalid,
       InterpolationModeDefault = QualityModeDefault,
       InterpolationModeLowQuality = QualityModeLow,
       InterpolationModeHighQuality = QualityModeHigh,
       InterpolationModeBilinear,
       InterpolationModeBicubic,
       InterpolationModeNearestNeighbor,
       InterpolationModeHighQualityBilinear,
       InterpolationModeHighQualityBicubic
     };
呵呵,从这一点上看,GDI+已经很仁至义尽了吧……


--
        ■■■■■■■■■■■■■■■■■■■■■■■■ 
          这个世界只有10种人,懂二进制的和不懂二进制的
        ■■■■■■■■■■■■■■■■■■■■■■■■
                jackyang@cs.zju since 2001

※ 来源:·浙江大学海纳百川站 bbs.zju.edu.cn·[FROM: jackyang]

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多