深入了解图标,使用WIC对Windows Vista图标进行解码
2008-10-24 17:35:27 来源:WEB开发网在 4 月份发行的《MSDN® 杂志》中,我介绍了 Windows® 图像处理组件 (WIC),向您展示了如何使用它对不同的图像格式进行编码和解码。本月,我将介绍如何通过编写自己的编解码器来扩展 WIC,并着重介绍开发适用于 Windows 图标格式的备用解码器的初始步骤。但首先,请允许我介绍一下编写编解码器的过程。
在大多数情况下,编写编解码器都非常简单。支持对特定图像格式进行编码的编解码器必须提供一个用于实现 IWICBitmapEncoder 接口的 COM 类。同样,支持对特定图像格式进行解码的编解码器还必须提供一个用于实现 IWICBitmapDecoder 接口的 COM 类。它们是同一类接口,供借助 WIC 处理图像的开发人员使用。实际上,编解码器的 COM 类在进程内加载,可以通过开发人员的应用程序代码直接访问。这样就提供了一种非常有效的抽象方法,使用者可实现高效的图像处理。
编码器还必须实现 IWICBitmapFrameEncode 接口,从而为图像的各个帧提供多种编码方法。即使图像格式并不支持多个帧,也需要使用 IWICBitmapFrameEncode 接口来表示图像像素。同样,解码器还必须实现 IWICBitmapFrameDecode 接口,从而为图像的各个帧提供多种解码方法。
编写好编解码器之后,使用者即可直接使用 CoCreateInstance 函数来创建它,但这样做并没有多大意义。要真正实现编解码器与 WIC 的集成,还需要执行另外几个步骤。尤其是,编码器和解码器必须在注册表中包含其他元数据,用以描述它们的功能。您还必须对包含编码器或解码器的所有 DLL 进行签名。借助元数据,WIC 可以在尝试为特定的图像格式查找合适的编码器,或为特定的图像文件查找合适的解码器时,确定编解码器是否提供了必要功能。由于使用者接收的特定实现可能在运行时确定,所以 WIC 仅允许已签名的编解码器参与发现和仲裁进程,以此尝试为使用者提供一定的保障。
- ››深入理解JAR包
- ››深入分析Volatile的实现原理
- ››深入理解Flash Player的应用程序域(Application ...
- ››深入理解flash函数(AS2)
- ››图标设计中的几何形状应用
- ››深入理解Android消息处理系统——Looper、Handler...
- ››深入理解SET NAMES和mysql(i)_set_charset的区别
- ››深入理解Mysql字符集设置
- ››深入浅出实战攻防恶意PDF文档
- ››深入剖析防火墙策略的执行过程:ISA2006系列之六
- ››深入JavaScript与.NET Framework中的日期时间(3)...
- ››深入JavaScript与.NET Framework中的日期时间(2)...
更多精彩
赞助商链接