位图源概述
本主题介绍位图源、核心 Windows 图像处理组件 (WIC) 组件,表示图像的位图像素。
本主题包含以下各节:
位图源
IWICBitmapSource 组件是 WIC 的基本构建基块,表示一组像素。 位图源可以是多帧图像的单个帧,也可以是在位图源上执行的转换的结果。 IWICBitmapSource 接口是许多主要 WIC 接口(例如解码器帧 IWICBitmapFrameDecode)和转换位图源(如 IWICBitmapFlipRotator)的基础。
下表描述了 WIC 提供的不同位图源组件。
位图源 | 说明 |
---|---|
IWICBitmapFrameDecode | 表示解码器图像帧。 |
IWICBitmap | 为位图源提供可写性和内存中表示形式。 |
IWICBitmapClipper | 将位图源剪裁为所需的矩形。 |
IWICBitmapFlipRotator | 将位图源翻转和/或旋转到所需方向。 |
IWICBitmapScaler | 将位图源缩放到所需的大小。 |
IWICColorTransform | 转换位图源的颜色上下文。 |
IWICFormatConverter | 转换位图源的像素格式。 |
位图帧
最常见的 IWICBitmapSource 是 IWICBitmapFrameDecode。 此接口用于访问图像格式的实际位图数据。 许多图像格式仅支持单个位图帧,而其他格式(如 GIF 和 TIFF)则支持每个图像多个帧。
有关从图像获取位图帧的示例,请参阅 如何检索图像的帧 主题。
位图
IWICBitmap 将可写性和内存中静态的概念添加到位图源。 WIC 位图使用户能够直接访问位图源的像素。 此直接访问由 Lock 方法提供,并支持对位图像素的读取和/或写入访问的任意组合。 Lock 方法锁定指定的位图矩形,并提供一个 IWICBitmapLock 对象来访问像素。
有关使用 IWICBitmap 和 IWICBitmapLock 对象的示例,请参阅 如何修改位图源的像素 主题。
转换位图源
WIC 提供了多个转换像素数据的 IWICBitmapSource 接口。 具体而言,WIC 提供位图源转换,用于缩放、剪裁、旋转和翻转像素数据。 这些位图源转换是 IWICBitmapClipper、 IWICBitmapScaler 和 IWICBitmapFlipRotator。 其中每个位图源都有一个方法来初始化和创建新的转换后的位图源。 例如, IWICBitmapClipper 包含 Initialize 方法。 此方法使用给定 WICRect 处输入位图源的剪裁像素数据初始化剪辑器位图源。
以下操作方法主题演示转换位图源的不同用法。
像素格式和颜色上下文转换器
WIC 还提供位图源,用于转换位图源的像素格式和颜色上下文。 WIC 为这些操作提供 IWICFormatConverter 和 IWICColorTransform 。
IWICFormatConverter 将给定位图源从一种像素格式转换为另一种像素格式。
有关使用 IWICFormatConverter 的示例,请参阅 如何使用 Direct2D 绘制位图源 主题。
绘制位图源
WIC 是一种静态图像编解码器技术,用于管理图像数据和元数据,并且本质上不提供呈现图像的方法。 但是,可以使用多种 Windows 图形技术(例如 Direct2D、Windows 图形设备接口 (GDI) 和 Windows GDI+)绘制位图源。 其中每一种技术都与 WIC 具有不同级别的互操作性。 Direct2D 通过 ID2D1Bitmap 接口和 ID2D1RenderTarget::CreateBitmapFromWicBitmap 方法提供直接互操作性,而 GDI 和 GDI+ 则要求用户将位图源像素复制到 位图中。
以下示例演示如何使用 Direct2D 绘制位图源。
相关主题
-
概念性
-
其他资源