IXpsOMObjectFactory::CreateRadialGradientBrush 方法 (xpsobjectmodel.h)

创建 IXpsOMRadialGradientBrush 接口。

语法

HRESULT CreateRadialGradientBrush(
  [in]          IXpsOMGradientStop        *gradStop1,
  [in]          IXpsOMGradientStop        *gradStop2,
  [in]          const XPS_POINT           *centerPoint,
  [in]          const XPS_POINT           *gradientOrigin,
  [in]          const XPS_SIZE            *radiiSizes,
  [out, retval] IXpsOMRadialGradientBrush **radialGradientBrush
);

参数

[in] gradStop1

IXpsOMGradientStop 接口,该接口指定渐变原点处渐变的属性。 此参数不得为 NULL

[in] gradStop2

IXpsOMGradientStop 接口,指定渐变向量末尾渐变的属性,该向量是包含渐变区域的椭圆。 此参数不得为 NULL

[in] centerPoint

径向渐变椭圆的中心点的坐标。

[in] gradientOrigin

径向渐变原点的坐标。

[in] radiiSizes

XPS_SIZE结构,其成员指定渐变区域半径的长度。

大小以 XPS 单元描述。 每英寸有 96 个 XPS 单位。 例如,1 英寸半径为 96 XPS 单位。

XPS_SIZE 成员 含义
width 沿 x 轴的半径长度。
height 沿 y 轴的半径长度。

[out, retval] radialGradientBrush

指向新 IXpsOMRadialGradientBrush 接口的 指针。

返回值

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

返回代码 说明
S_OK
方法成功。
E_INVALIDARG
由 centerPointradiiSizesgradientOrigin 描述的点无效。 XPS_POINT结构的成员必须包含有效和有限的浮点值。
E_POINTER
gradStop1gradStop2centerPointgradientOriginradiiSizesradialGradientBrushNULL
XPS_E_NO_CUSTOM_OBJECTS
gradStop1gradStop1 不指向已识别的接口实现。 不支持 XPS 文档 API 接口的自定义实现。

注解

如下图所示,径向渐变的渐变区域是由中心点描述的椭圆包围的区域,以及从中心点延伸的 x 和 y 半径。 传播区域是该椭圆之外的区域。 渐变路径 (不显示) 是渐变原点与渐变区域边界椭圆之间绘制的径向线。

显示径向渐变中使用的术语的图 对于径向渐变画笔, 由 gradStop1 参数设置的渐变停止点对应于渐变原点位置和偏移值为 0.0。 由 gradStop2 参数设置的渐变停止点对应于渐变区域的周长和偏移值 1.0。 有关渐变停止点的详细信息,请参阅 IXpsOMGradientStop

下面的代码示例演示了如何使用此方法创建新接口。


IXpsOMRadialGradientBrush    *newInterface;
// The following values are defined outside of 
// this example.
//  IXpsOMGradientStop       *gradStop1, *gradStop2;
//  XPS_POINT                centerPoint, gradientOrigin;
//  XPS_SIZE                 radiiSizes;

// 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->CreateRadialGradientBrush (
        gradStop1,
        gradStop2,
        &centerPoint,
        &gradientOrigin,
        &radiiSizes,
        &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

另请参阅

IXpsOMGradientStop

IXpsOMObjectFactory

IXpsOMRadialGradientBrush

XML 纸张规范

XPS 文档错误

XPS_POINT

XPS_SIZE