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


Метод 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. Возможные значения включают, помимо прочего, значения в следующей таблице. Сведения о возвращаемых значениях API документов XPS, не перечисленных в этой таблице, см. в разделе Ошибки документа XPS.

Код возврата Описание
S_OK
Метод выполнен успешно.
E_POINTER
image, viewBox, viewPort или imageBrush имеет значение NULL.
E_INVALIDARG
элемент viewBox или viewPort содержит недопустимый прямоугольник или значение.

Комментарии

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

Координаты поля просмотра кисти относительно исходного содержимого, так что (0,0) указывает верхний левый угол исходного содержимого. Для изображений размеры, заданные полем просмотра кисти, выражаются в единицах 1/96". Соответствующие координаты пикселей на исходном изображении вычисляются следующим образом:

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

Иллюстрация с примером окна просмотра Если исходное разрешение изображения составляет 96 х 96 точек на дюйм, а размеры изображения — 96 х 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, Windows Vista с пакетом обновления 2 (SP2) и обновление платформы для Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2) и Обновление платформы для Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header xpsobjectmodel.h

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

IXpsOMImageBrush

IXpsOMImageResource

IXpsOMObjectFactory

IXpsOMTileBrush

XPS

Ошибки документа XPS

XPS_RECT