IXpsOMObjectFactory::CreateImageBrush 方法 (xpsobjectmodel.h)

创建 IXpsOMImageBrush 接口。

语法

HRESULT CreateImageBrush(
  [in]          IXpsOMImageResource *image,
  [in]          const XPS_RECT      *viewBox,
  [in]          const XPS_RECT      *viewPort,
  [out, retval] IXpsOMImageBrush    **imageBrush
);

参数

[in] image

包含要用作画笔源图像的图像的 IXpsOMImageResource 接口。

[in] viewBox

定义视图框的XPS_RECT结构,该视图框是画笔使用的源图像的区域。

[in] viewPort

定义视区的 XPS_RECT 结构,该 视区是输出区域中第一个磁贴覆盖的区域。

[out, retval] imageBrush

指向新 IXpsOMImageBrush 接口的 指针。

返回值

该方法返回 HRESULT。 可能的值包括但不限于下表中的值。 有关此表中未列出的 XPS 文档 API 返回值的信息,请参阅 XPS 文档错误

返回代码 说明
S_OK
方法成功。
E_POINTER
imageviewBoxviewPortimageBrushNULL
E_INVALIDARG
viewBoxviewPort 包含无效的矩形或值。

注解

画笔的视框指定要用作磁贴图像的源图像或视觉对象的部分。

画笔视框的坐标相对于源内容,因此 (0,0) 指定源内容的左上角。 对于图像,画笔的视框指定的尺寸以 1/96“的单位表示。 源图像中的相应像素坐标的计算方式如下:

在下图中,左侧的图像是源图像的示例,最右侧是选择视图框后产生的画笔。

显示视图框示例的插图 如果源图像分辨率为每英寸 96 x 96 点,图像尺寸为 96 x 96 像素,则 viewbox 参数中的字段值如下所示:

上述参数值对应于源图像,如下所示:

SourceLeft = (96 × 48) / 96 = 48 像素(从左侧)
SourceTop = (96 × 24) / 96 = 距顶部 24 像素
SourceWidth = (96 × 24) / 96 = 24 像素宽
SourceHeight = (96 × 48) / 96 = 48 像素高

图像画笔是一种磁贴画笔,用于获取图像或其一部分,转换图像以创建磁贴,将生成的磁贴放置在视区 (磁贴的目标几何图形的输出区域) ,并按平铺模式所述填充输出区域。

视区是输出区域中第一个磁贴覆盖的区域。 视区图像在整个输出区域中重复,如平铺模式所述。

下图显示了如何使用图像画笔填充输出区域。 从左到右转换原始图像以填充视区,然后放置在输出区域的视区区域中,然后平铺以填充输出区域。

显示图块画笔如何填充几何图形 下面的代码示例演示了如何使用此方法创建新接口。

IXpsOMImageBrush            *newInterface;
// The following values are defined outside of 
// this example.
//  IXpsOMImageResource     *image;
//  XPS_RECT                viewBox;
//  XPS_RECT                viewPort;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreateImageBrush (
        image,
        &viewBox,
        &viewPort,
        &newInterface);

    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}

要求

要求
最低受支持的客户端 Windows 7、带 SP2 的 Windows Vista 和适用于 Windows Vista 的平台更新 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2、Windows Server 2008 SP2 和适用于 Windows Server 2008 的平台更新 [桌面应用 |UWP 应用]
目标平台 Windows
标头 xpsobjectmodel.h

另请参阅

IXpsOMImageBrush

IXpsOMImageResource

IXpsOMObjectFactory

IXpsOMTileBrush

XML 纸张规范

XPS 文档错误

XPS_RECT