IXpsRasterizer::RasterizeRect 方法 (xpsrassvc.h)

RasterizeRect 方法光栅化 XPS 固定页的轴对齐矩形区域。

语法

HRESULT RasterizeRect(
  [in]            INT                                x,
  [in]            INT                                y,
  [in]            INT                                width,
  [in]            INT                                height,
  [in, optional]  IXpsRasterizerNotificationCallback *notificationCallback,
  [out, optional] IWICBitmap                         **bitmap
);

参数

[in] x

输出位图左边缘的 x 坐标(以像素为单位)。

[in] y

输出位图上边缘的 y 坐标(以像素为单位)。

[in] width

输出位图的宽度(以像素为单位)。

[in] height

输出位图的高度(以像素为单位)。

[in, optional] notificationCallback

指向由调用方实现的通知对象的 IXpsRasterizerNotificationCallback 接口的指针。 此参数是可选的,如果调用方不需要通知回调,则可以为 NULL

[out, optional] bitmap

指向方法在其中写入指向新创建的位图对象的 IWICBitmap 接口的指针的位置的指针。 如果方法失败,它会将 NULL 写入此位置并返回错误代码。

返回值

如果调用成功,RasterizeRect 将返回S_OK。 否则,该方法将返回错误代码。 可能的错误返回值包括:

返回代码 说明
E_POINTER 参数 位图NULL
E_INVALIDARG 参数 宽度高度 小于或等于 0。

注解

Windows 7 及更高版本支持此方法。 在 Windows 7 之前的 Windows 操作系统版本中不支持它。

如果成功,此方法 (WIC) 位图对象创建 Windows 映像组件,并将对对象的 IWICBitmap 接口的计数引用传递给调用方。 当不再需要对象时,调用方负责通过在对象的 IWICBitmap 接口上调用 Release 方法来释放对象。

此方法创建的 WIC 位图具有 32 位像素格式,其中包含 8 位红色、绿色和蓝色通道,并使用标准 RGB (sRGB) 颜色空间。 此外,格式还包含 8 位 alpha 分量。 每个像素值中的颜色分量预先乘以 alpha 分量。 像素格式由在头文件 Wincodec.h 中定义的 GUID 值 GUID_WICPixelFormat32bppPBGRA指定。 有关此格式的详细信息,请参阅 本机像素格式概述

IXpsRasterizationFactory::CreateRasterizer 方法的 DPI 参数指定要呈现位图的分辨率(以点/英寸为单位)。 如 XPS 规范中所述,XPS 文档中固定页面的宽度和高度以 1/96 英寸为单位指定。 若要确定表示整个固定页面所需的位图) 像素 (尺寸,请将宽度和高度乘以 DPI/96。

若要适应需要将固定页光栅化为一系列水平或垂直带的打印机,参数 xy宽度高度 指定要光栅化的固定页的矩形区域。 所有四个参数值都以像素为单位指定。 参数 xy 是矩形区域左上角的坐标;它们指定为坐标原点 (0, 0) 的像素位移。 参数 宽度高度 是矩形区域的尺寸。

例如,如果 wXPS 和 hXPS 是 XPS 固定页的宽度和高度(以 1/96 英寸为单位),则如果参数 xywidthheight 设置为以下值,则 RasterizeRect 将生成固定页下半部分的位图表示形式:

xyhDPI宽度wDPI高度hDPI

如果 notificationCallback 参数为非 NULL则 RasterizeRect 方法采用对通知对象的 IXpsRasterizerNotificationCallback 接口的计数引用。 在调用 IXpsRasterizerNotificationCallback::Continue 方法之前,它通过在接口上调用 AddRef 方法来执行此操作。 在 RasterizeRect 返回之前,它会通过在 *IXpsRasterizerNotificationCallback 接口上调用 Release 方法来释放通知对象。

XPS 规范中所述,可选的 BleedBox 属性可以指定一个出血框,该出血框扩展到固定页面的边界之外。 为了容纳出血框,由参数 xywidthheight 定义的矩形也可以超出固定页面的边界。 方法接受 xy 的任何值(正值或负值),并且接受 宽度高度的任何正值、非零值。 这些参数指定的矩形定义光栅化操作的剪裁区域。 如果矩形超出固定页的边界,则剪切区域也会超出这些边界。

如果方法失败并且 位图 为非 NULL,则方法将设置 *bitmap = NULL

有关调用 RasterizeRect 方法的代码示例,请参阅 WDK 中的 XPSRasFilter 示例。 此示例位于 WDK 安装的 Src\Print\Xpsrasfilter 文件夹中。

要求

   
最低受支持的客户端 适用于 Windows 7 及更高版本的 Windows 操作系统。
目标平台 桌面
标头 xpsrassvc.h

另请参阅

IWICBitmap

IXpsRasterizationFactory::CreateRasterizer

IXpsRasterizer

IXpsRasterizer::SetMinimalLineWidth

IXpsRasterizerNotificationCallback