ID2D1RenderTarget::P ushLayer(constD2D1_LAYER_PARAMETERS&,ID2D1Layer*) 메서드(d2d1.h)

PopLayer가 호출될 때까지 모든 후속 그리기 작업을 받을 수 있도록 렌더링 대상에 지정된 레이어를 추가합니다.

구문

void PushLayer(
  [ref] const D2D1_LAYER_PARAMETERS & layerParameters,
  [in]  ID2D1Layer                    *layer
);

매개 변수

[ref] layerParameters

형식: const D2D1_LAYER_PARAMETERS

레이어에 대한 콘텐츠 경계, 기하학적 마스크, 불투명도, 불투명 마스크 및 앤티앨리어싱 옵션입니다.

[in] layer

형식: ID2D1Layer*

후속 그리기 작업을 수신하는 계층입니다.

참고 Windows 8 이 매개 변수는 선택 사항입니다. 레이어를 지정하지 않으면 Direct2D는 레이어 리소스를 자동으로 관리합니다.
 

반환 값

없음

설명

PushLayer 메서드를 사용하면 호출자가 렌더링을 계층으로 리디렉션하기 시작할 수 있습니다. 모든 렌더링 작업은 계층에서 유효합니다. 레이어의 위치는 렌더링 대상에 설정된 월드 변환의 영향을 받습니다.

PushLayer 에는 일치하는 PopLayer 호출이 있어야 합니다. PushLayer 호출보다 더 많은 PopLayer 호출이 있는 경우 렌더링 대상이 오류 상태에 놓입니다. 모든 미해결 계층이 표시되기 전에 Flush 가 호출되면 렌더링 대상이 오류 상태로 전환되고 오류가 반환됩니다. EndDraw를 호출하여 오류 상태를 지울 수 있습니다.

특정 ID2D1Layer 리소스는 한 번에 활성화할 수 있습니다. 즉, PushLayer 메서드를 호출한 다음, 동일한 계층 리소스가 있는 다른 PushLayer 메서드를 즉시 따를 수 없습니다. 대신 다른 계층 리소스를 사용하여 두 번째 PushLayer 메서드를 호출해야 합니다.

이 메서드는 실패할 경우 오류 코드를 반환하지 않습니다. 그리기 작업(예: PushLayer)이 실패했는지 여부를 확인하려면 ID2D1RenderTarget::EndDraw 또는 ID2D1RenderTarget::Flush 메서드에서 반환된 결과를 검사.

예제

다음 예제에서는 레이어를 사용하여 비트맵을 기하학적 마스크로 클리핑합니다. 전체 예제는 기하학적 마스크로 클립하는 방법을 참조하세요.

HRESULT DemoApp::RenderWithLayer(ID2D1RenderTarget *pRT)
{
    HRESULT hr = S_OK;

    // Create a layer.
    ID2D1Layer *pLayer = NULL;
    hr = pRT->CreateLayer(NULL, &pLayer);

    if (SUCCEEDED(hr))
    {
        pRT->SetTransform(D2D1::Matrix3x2F::Translation(350, 50));

        // Push the layer with the geometric mask.
        pRT->PushLayer(
            D2D1::LayerParameters(D2D1::InfiniteRect(), m_pPathGeometry),
            pLayer
            );
            
  
        pRT->DrawBitmap(m_pOrigBitmap, D2D1::RectF(0, 0, 200, 133));
        pRT->FillRectangle(D2D1::RectF(0.f, 0.f, 25.f, 25.f), m_pSolidColorBrush);  
        pRT->FillRectangle(D2D1::RectF(25.f, 25.f, 50.f, 50.f), m_pSolidColorBrush);
        pRT->FillRectangle(D2D1::RectF(50.f, 50.f, 75.f, 75.f), m_pSolidColorBrush); 
        pRT->FillRectangle(D2D1::RectF(75.f, 75.f, 100.f, 100.f), m_pSolidColorBrush);    
        pRT->FillRectangle(D2D1::RectF(100.f, 100.f, 125.f, 125.f), m_pSolidColorBrush); 
        pRT->FillRectangle(D2D1::RectF(125.f, 125.f, 150.f, 150.f), m_pSolidColorBrush);    
        

        pRT->PopLayer();
    }

    SafeRelease(&pLayer);

    return hr;
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7, Windows Vista SP2 및 Windows Vista용 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 R2, Windows Server 2008 SP2 및 Windows Server 2008용 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 d2d1.h
라이브러리 D2d1.lib
DLL D2d1.dll

추가 정보

ID2D1RenderTarget

레이어 개요

PopLayer