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 문서 오류를 참조하세요.

반환 코드 Description
S_OK
메서드가 성공했습니다.
E_POINTER
image, viewBox, viewPort 또는 imageBrushNULL입니다.
E_INVALIDARG
viewBox 또는 viewPort 에는 유효하지 않은 사각형 또는 값이 포함되어 있습니다.

설명

브러시의 보기 상자는 타일 이미지로 사용할 원본 이미지 또는 시각적 개체의 부분을 지정합니다.

브러시 보기 상자의 좌표는 원본 콘텐츠에 상대적이므로(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, Windows Vista SP2 및 Windows Vista용 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 R2, Windows Server 2008 SP2 및 Windows Server 2008용 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 xpsobjectmodel.h

추가 정보

IXpsOMImageBrush

IXpsOMImageResource

IXpsOMObjectFactory

IXpsOMTileBrush

XML Paper Specification

XPS 문서 오류

XPS_RECT