D2D1_COMBINE_MODE 열거형(d2d1.h)
두 기하 도형을 결합하는 데 사용할 수 있는 여러 메서드를 지정합니다.
Syntax
typedef enum D2D1_COMBINE_MODE {
D2D1_COMBINE_MODE_UNION = 0,
D2D1_COMBINE_MODE_INTERSECT = 1,
D2D1_COMBINE_MODE_XOR = 2,
D2D1_COMBINE_MODE_EXCLUDE = 3,
D2D1_COMBINE_MODE_FORCE_DWORD = 0xffffffff
} ;
상수
D2D1_COMBINE_MODE_UNION 값: 0 두 영역의 합을 사용하여 두 영역을 결합합니다. 두 개의 기하 도형 인 A 와 B가 지정되면 결과 기하 도형은 geometry A + geometry B입니다. |
D2D1_COMBINE_MODE_INTERSECT 값: 1 두 영역의 교차 부분을 사용하여 두 영역을 결합합니다. 새 영역은 두 기하 도형 간에 겹쳐지는 영역으로 구성으로 구성됩니다. |
D2D1_COMBINE_MODE_XOR 값: 2 첫 번째 영역에만 있고 두 번째 영역에는 없는 영역과 두 번째 영역에만 있고 첫 번째 영역에는 없는 영역을 사용하여 두 영역을 결합합니다. 두 기하 도형 인 A 와 B가 지정되면 새 영역은 (A-B) + (B-A)로 구성됩니다. |
D2D1_COMBINE_MODE_EXCLUDE 값: 3 두 번째 영역이 첫 번째 영역에서 제외됩니다. 두 개의 기하 도형 인 A 와 B가 지정되면 기하 도형 B 의 영역이 기하 도형 A 영역에서 제거되어 A-B인 영역을 생성합니다. |
D2D1_COMBINE_MODE_FORCE_DWORD 값: 0xffffffff |
설명
다음 그림에서는 다른 기 하 도형 결합 모드를 보여 줍니다.
예제
다음 코드는 서로 다른 각 결합 모드를 사용하여 두 개의 ID2D1EllipseGeometry 개체를 결합합니다.
HRESULT DemoApp::CreateGeometryResources()
{
HRESULT hr = S_OK;
ID2D1GeometrySink *pGeometrySink = NULL;
// Create the first ellipse geometry to merge.
const D2D1_ELLIPSE circle1 = D2D1::Ellipse(
D2D1::Point2F(75.0f, 75.0f),
50.0f,
50.0f
);
hr = m_pD2DFactory->CreateEllipseGeometry(
circle1,
&m_pCircleGeometry1
);
if (SUCCEEDED(hr))
{
// Create the second ellipse geometry to merge.
const D2D1_ELLIPSE circle2 = D2D1::Ellipse(
D2D1::Point2F(125.0f, 75.0f),
50.0f,
50.0f
);
hr = m_pD2DFactory->CreateEllipseGeometry(circle2, &m_pCircleGeometry2);
}
if (SUCCEEDED(hr))
{
//
// Use D2D1_COMBINE_MODE_UNION to combine the geometries.
//
hr = m_pD2DFactory->CreatePathGeometry(&m_pPathGeometryUnion);
if (SUCCEEDED(hr))
{
hr = m_pPathGeometryUnion->Open(&pGeometrySink);
if (SUCCEEDED(hr))
{
hr = m_pCircleGeometry1->CombineWithGeometry(
m_pCircleGeometry2,
D2D1_COMBINE_MODE_UNION,
NULL,
NULL,
pGeometrySink
);
}
if (SUCCEEDED(hr))
{
hr = pGeometrySink->Close();
}
SafeRelease(&pGeometrySink);
}
}
if (SUCCEEDED(hr))
{
//
// Use D2D1_COMBINE_MODE_INTERSECT to combine the geometries.
//
hr = m_pD2DFactory->CreatePathGeometry(&m_pPathGeometryIntersect);
if (SUCCEEDED(hr))
{
hr = m_pPathGeometryIntersect->Open(&pGeometrySink);
if (SUCCEEDED(hr))
{
hr = m_pCircleGeometry1->CombineWithGeometry(
m_pCircleGeometry2,
D2D1_COMBINE_MODE_INTERSECT,
NULL,
NULL,
pGeometrySink
);
}
if (SUCCEEDED(hr))
{
hr = pGeometrySink->Close();
}
SafeRelease(&pGeometrySink);
}
}
if (SUCCEEDED(hr))
{
//
// Use D2D1_COMBINE_MODE_XOR to combine the geometries.
//
hr = m_pD2DFactory->CreatePathGeometry(&m_pPathGeometryXOR);
if (SUCCEEDED(hr))
{
hr = m_pPathGeometryXOR->Open(&pGeometrySink);
if (SUCCEEDED(hr))
{
hr = m_pCircleGeometry1->CombineWithGeometry(
m_pCircleGeometry2,
D2D1_COMBINE_MODE_XOR,
NULL,
NULL,
pGeometrySink
);
}
if (SUCCEEDED(hr))
{
hr = pGeometrySink->Close();
}
SafeRelease(&pGeometrySink);
}
}
if (SUCCEEDED(hr))
{
//
// Use D2D1_COMBINE_MODE_EXCLUDE to combine the geometries.
//
hr = m_pD2DFactory->CreatePathGeometry(&m_pPathGeometryExclude);
if (SUCCEEDED(hr))
{
hr = m_pPathGeometryExclude->Open(&pGeometrySink);
if (SUCCEEDED(hr))
{
hr = m_pCircleGeometry1->CombineWithGeometry(
m_pCircleGeometry2,
D2D1_COMBINE_MODE_EXCLUDE,
NULL,
NULL,
pGeometrySink
);
}
if (SUCCEEDED(hr))
{
hr = pGeometrySink->Close();
}
SafeRelease(&pGeometrySink);
}
}
return hr;
}
요구 사항
지원되는 최소 클라이언트 | Windows 7, Windows Vista SP2 및 Windows Vista용 플랫폼 업데이트가 포함된 Windows Vista [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2008 R2, Windows Server 2008 SP2 및 Windows Server 2008용 플랫폼 업데이트 [데스크톱 앱 | UWP 앱] |
머리글 | d2d1.h |