기본 도형을 그리고 채우는 방법
이 항목에서는 기본 도형을 그리는 방법을 설명합니다. ID2D1RenderTarget 인터페이스는 줄임표, 사각형 및 줄을 간략하게 설명하고 채우는 메서드를 제공합니다. 다음 예제에서는 타원을 만들고 그리는 방법을 보여 줍니다.
이 항목에는 다음과 같은 섹션이 포함되어 있습니다.
단색 스트로크로 타원의 윤곽선 그리기
타원의 윤곽선을 그리려면 윤곽선을 그리기 위한 브러시(예: ID2D1SolidColorBrush 또는 ID2D1LinearGradientBrush)를 정의하고 타원의 위치와 차원을 설명하는 D2D1_ELLIPSE 다음 이러한 개체를 ID2D1RenderTarget::D rawEllipse 메서드에 전달합니다. 다음 예제에서는 검은색 단색 브러시를 만들고 m_spBlackBrush 클래스 멤버에 저장합니다.
hr = m_pRenderTarget->CreateSolidColorBrush(
D2D1::ColorF(D2D1::ColorF::Black),
&m_pBlackBrush
);
다음 예제에서는 D2D1_ELLIPSE 정의하고 이전 예제에 정의된 브러시와 함께 사용하여 타원의 윤곽선을 그립니다. 이 예제에서는 다음 그림에 표시된 출력을 생성합니다.
D2D1_ELLIPSE ellipse = D2D1::Ellipse(
D2D1::Point2F(100.f, 100.f),
75.f,
50.f
);
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f);
파선 스트로크로 타원 그리기
앞의 예제에서는 일반 스트로크를 사용했습니다. ID2D1StrokeStyle을 만들어 여러 가지 방법으로 스트로크 모양을 수정할 수 있습니다. ID2D1StrokeStyle을 사용하면 스트로크의 시작과 끝에 대시 패턴이 있는지 여부에 관계없이 셰이프를 지정할 수 있습니다. 다음 예제에서는 파선 스트로크를 설명하는 ID2D1StrokeStyle 을 만듭니다. 이 예제에서는 D2D1_DASH_STYLE_DASH_DOT_DOT 미리 정의된 대시 패턴을 사용하지만 사용자 고유의 대시 패턴을 지정할 수도 있습니다.
D2D1_STROKE_STYLE_PROPERTIES strokeStyleProperties = D2D1::StrokeStyleProperties(
D2D1_CAP_STYLE_FLAT, // The start cap.
D2D1_CAP_STYLE_FLAT, // The end cap.
D2D1_CAP_STYLE_TRIANGLE, // The dash cap.
D2D1_LINE_JOIN_MITER, // The line join.
10.0f, // The miter limit.
D2D1_DASH_STYLE_DASH_DOT_DOT, // The dash style.
0.0f // The dash offset.
);
hr = m_pDirect2dFactory->CreateStrokeStyle(strokeStyleProperties, NULL, 0, &m_pStrokeStyle);
다음 예제에서는 DrawEllipse 메서드와 함께 스트로크 스타일을 사용합니다. 이 예제에서는 다음 그림에 표시된 출력을 생성합니다.
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f, m_pStrokeStyle);
타원 그리기 및 채우기
타원의 내부를 그리려면 FillEllipse 메서드를 사용합니다. 다음 예제에서는 DrawEllipse 메서드를 사용하여 타원을 간략하게 설명한 다음 FillEllipse 메서드를 사용하여 내부를 그립니다. 이 예제에서는 다음 그림에 표시된 출력을 생성합니다.
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f, m_pStrokeStyle);
m_pRenderTarget->FillEllipse(ellipse, m_pSilverBrush);
다음 예제에서는 줄임표를 먼저 채운 다음 윤곽선을 그립니다. 이 예제에서는 다음 그림에 표시된 출력을 생성합니다.
m_pRenderTarget->FillEllipse(ellipse, m_pSilverBrush);
m_pRenderTarget->DrawEllipse(ellipse, m_pBlackBrush, 10.f, m_pStrokeStyle);
이러한 예제에서 코드를 생략했습니다.
더 복잡한 도형 그리기
더 복잡한 셰이프를 그리려면 ID2D1Geometry 개체를 정의하고 DrawGeometry 및 FillGeometry 메서드 와 함께 사용합니다. 자세한 내용은 Geometries 개요를 참조하세요.
관련 항목