Метод IXpsOMObjectFactory::CreateGradientStop (xpsobjectmodel.h)
Создает интерфейс IXpsOMGradientStop для представления одного определения цвета и расположения в градиенте.
Синтаксис
HRESULT CreateGradientStop(
[in] const XPS_COLOR *color,
[in] IXpsOMColorProfileResource *colorProfile,
[in] FLOAT offset,
[out, retval] IXpsOMGradientStop **gradientStop
);
Параметры
[in] color
Значение цвета.
[in] colorProfile
Указатель на интерфейс IXpsOMColorProfileResource , содержащий используемый цветовой профиль. Если тип цвета не XPS_COLOR_TYPE_CONTEXT, этот параметр должен иметь значение NULL.
[in] offset
Значение смещения.
Допустимый диапазон: 0,0–1,0
[out, retval] gradientStop
Указатель на новый интерфейс IXpsOMGradientStop .
Возвращаемое значение
Метод возвращает HRESULT. Возможные значения включают, помимо прочего, значения в следующей таблице. Сведения о возвращаемых значениях API документов XPS, не перечисленных в этой таблице, см. в разделе Ошибки документа XPS.
Код возврата | Описание |
---|---|
|
Метод выполнен успешно. |
|
Недопустимое значение смещения . |
|
color или gradientStop имеет значение NULL. |
|
colorProfile имеет значение NULL , но ожидается цветовой профиль. Если тип цвета XPS_COLOR_TYPE_CONTEXT, требуется цветовой профиль. |
|
colorProfile не указывает на реализацию распознанного интерфейса. Пользовательская реализация интерфейсов API документов XPS не поддерживается. |
|
colorProfile содержит цветовой профиль, но он не ожидается. Цветовой профиль разрешен только в том случае, если тип цвета XPS_COLOR_TYPE_CONTEXT. |
Комментарии
Остановки градиента используются для определения цвета в определенном расположении; цвет интерполируется между остановками градиента. Смещение, заданное с помощью смещения, является относительным положением между начальной и конечной точками градиента. Смещение в начальной точке линейного градиента или начала радиального градиента равно 0,0. Смещение конечной точки линейного градиента или ограничивающего эллипса радиального градиента равно 1,0. Градиентные остановки можно указать для любого смещения между этими точками, включая начальную и конечную точки. На следующем рисунке показан путь градиента и градиентные остановки линейного градиента.
На следующем рисунке показаны остановки градиента радиального градиента. В этом примере радиальная область градиента — это область, заключенная в внешний эллипс, а метод XPS_SPREAD_METHOD_REFLECT распределения используется для заполнения пространства за пределами области градиента. Интерфейс IXpsOMGradientStop указывает одну и только одну остановку в градиенте.Вычисления, используемые для отрисовки градиента, описаны в спецификации xml paper.
В следующем примере кода показано, как этот метод используется для создания нового интерфейса.
IXpsOMGradientStop *newInterface;
// The following values are defined outside of
// this example.
// XPS_COLOR color;
// IXpsOMColorProfileResource *colorProfile;
// FLOAT offset;
// 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->CreateGradientStop (
&color,
colorProfile,
offset,
&newInterface);
if (SUCCEEDED(hr))
{
// use newInterface
newInterface->Release();
}
xpsFactory->Release();
}
else
{
// evaluate HRESULT error returned in hr
}
Требования
Минимальная версия клиента | Windows 7, Windows Vista с пакетом обновления 2 (SP2) и обновление платформы для Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2) и Обновление платформы для Windows Server 2008 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | xpsobjectmodel.h |