Поделиться через


Интерфейс IXpsOMGradientStop (xpsobjectmodel.h)

Представляет один цвет и расположение в градиенте.

Наследование

Интерфейс IXpsOMGradientStop наследуется от интерфейса IUnknown . IXpsOMGradientStop также имеет следующие типы элементов:

Методы

Интерфейс IXpsOMGradientStop содержит следующие методы.

 
IXpsOMGradientStop::Clone

Создает глубокую копию интерфейса IXpsOMGradientStop.
IXpsOMGradientStop::GetColor

Возвращает значение цвета и профиль цвета остановки градиента.
IXpsOMGradientStop::GetOffset

Возвращает значение смещения остановки градиента.
IXpsOMGradientStop::GetOwner

Возвращает указатель на интерфейс IXpsOMGradientBrush, содержащий остановку градиента.
IXpsOMGradientStop::SetColor

Задает значение цвета и профиль цвета остановки градиента.
IXpsOMGradientStop::SetOffset

Задает расположение смещения остановки градиента.

Комментарии

Остановка градиента — это определенный цвет, определенный для расположения в области градиента. Цвет градиента изменяется между остановками градиента. Область и абсолютное расположение градиента определяются интерфейсом градиента. Смещение является относительным расположением в области градиента и измеряется в диапазоне от 0,0 до 1,0. Смещение 0,0 — начало градиента, а 1,0 — конец. Градиентные остановки можно определить для любого смещения в диапазоне, включая конечные точки. Этот интерфейс описывает только одну остановку в градиенте.

Путь градиента — это прямая линия, соединяющая начальную и конечную точку линейного градиента. Область градиента линейного градиента состоит из области между начальной и конечной точками, включая эти точки, и расширяется в обоих направлениях под прямым углом к пути градиента. Область распространения — это область за пределами области градиента.

Градиентные остановки определяют цвет в определенном месте вдоль пути градиента; цвет интерполируется по пути градиента между остановками градиента. В следующем примере градиентная область заполняет изображение, поэтому область распространения отсутствует.

Для остановок градиента, используемых в линейно-градиентных кисти, значение смещения 0,0 соответствует начальной точке пути градиента, а значение смещения 1,0 — конечной точке. Чтобы определить расположение остановки градиента между этими двумя точками, между ними интерполируются промежуточные значения смещения. На следующем рисунке показаны две промежуточные остановки градиента: одна со смещением 0,25, а другая — с 0,75.

Рисунок, показывающий термины, используемые в линейном градиенте

Для остановок градиента, используемых в радиально-градиентных кистей, значение смещения 0,0 соответствует расположению источника градиента, а значение смещения 1,0 соответствует окружности эллипса, ограничивающего градиент. Смещения от 0,0 до 1,0 определяют эллипс, который интерполируется между источником градиента и ограничивающим эллипсой. На следующем рисунке имеется одна промежуточная остановка градиента со смещением 0,50 (градиентная остановка 1). Градиент использует метод XPS_SPREAD_METHOD_REFLECT spread для заполнения пространства за пределами области градиента.

Рисунок, показывающий термины, используемые в радиальном градиенте Вычисления, используемые для отрисовки градиента, описаны в спецификации 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

См. также раздел

IXpsOMGradientBrush

IXpsOMObjectFactory::CreateGradientStop

Интерфейсы

XPS