2016-08-18 1 views
2

API에서 작업 중이므로 ID2D1Rendertarget에 외부 지오메트리 마스크를 설정해야합니다. 그리하여 이후의 그리기 호출은 외부에있는 도면 부분 만 그립니다. 이 기하학.d2d에서 외부 지오메트리 마스크를 설정하여 d2d가 해당 지오 메트릭 외부로 그려야합니다.

https://msdn.microsoft.com/en-us/library/windows/desktop/dd756675(v=vs.85).aspx은 ID2D1Rendertarget에 내부 지오메트리 마스크를 설정하여 그 후의 그리기 호출이이 지오 메트릭 내부에있는 드로잉 부분 만 끌어 오도록하는 방법을 설명합니다. 그 반대의 것을 구현하고 싶습니다. 이것이 가능한가? 어떤 도움도 깊이 감사드립니다.

답변

1

이렇게하는 한 가지 방법은 전체 렌더링 대상을 채우는 사각형에서 지오메트리를 뺍니다. combining geometries의 MSDN 페이지를 확인하십시오. 아래에 작은 코드 예제가 있습니다.

ComPtr<ID2D1PathGeometry> invertedGeometry; 
ComPtr<ID2D1RectangleGeometry> rectangleGeometry; 
d2dFactory->CreateRectangleGeometry(
    { 0, 0, targetWidth, targetHeight }, 
    &rectangleGeometry 
    ); 

ComPtr<ID2D1GeometrySink> geometrySink; 
d2dFactory->CreatePathGeometry(&invertedGeometry); 
invertedGeometry->Open(&geometrySink); 
rectangleGeometry->CombineWithGeometry(
    pathGeometry.Get(), 
    D2D1_COMBINE_MODE_EXCLUDE, 
    D2D1::Matrix3x2F::Identity(), 
    geometrySink.Get() 
    ); 
geometrySink->Close(); 

원래의 경로 형상 대신 기하학적 마스크를 사용하십시오.

두 번째 방법은 형상을 비트 맵으로 래스터 화하여 불투명 마스크로 사용하는 것입니다. 안쪽이나 바깥 쪽을 가릴 지 여부에 따라 색상을 바꿀 수 있습니다.

+0

감사합니다. –

관련 문제