F.R.I.D.A.Y.

Direct2D - DrawRectangle() 본문

DEV/Direct2D

Direct2D - DrawRectangle()

F.R.I.D.A.Y. 2021. 4. 5. 05:39
반응형

 Direct2D에서 사각형을 그릴 수 있는 함수


DrawRectangle

 GDI/GDI+에서는 Rectangle 함수였던 것이 Direct2D에서는 DrawRectangle 함수로 변경되었다.

 

함수 원형

void DrawRectangle(
  const D2D1_RECT_F & rect,
  ID2D1Brush          *brush,
  FLOAT               strokeWidth,
  ID2D1StrokeStyle    *strokeStyle
);

 세 번째 인자인 strokeWidth와 strokeStyle은 모두 기본값이 존재[# strokeWidth = 1.0f\nstrokeStyle=0]하기 때문에 첫 번째와 두 번째 인자만 작성해도 사용에는 문제가 없다.

 

D2D1_RECT_F

 사각형을 그릴 크기와 위치를 모두 포함한다. D2D1_RECT_F 구조체는 아래와 같은 원형을 가지고 있다.

typedef struct D2D_RECT_F
{
    FLOAT left;
    FLOAT top;
    FLOAT right;
    FLOAT bottom;

} D2D_RECT_F;
// 이 구조체가 다시 D2D1_RECT_F로 typdef 되어 있다.

 각 항목은 사각형의 각 변이 어디에 위치하는가에 대한 내용을 가지고 있다. 즉, 하나의 점이 주어지고 그 점에서의 width와 height를 구하는 것이 아니라 두점 사이에 사각형이 그려지는 형식이라 보면 된다.

 이미지와 같은 사양의 사각형을 그리려 할 때, D2D1_RECT_F에는 아래처럼 들어간다.

D2D1_RECT_F rect;

rect.left = 20;
rect.top = 20;
rect.right = 50;	//rect.left + width
rect.bottom = 50;	//rect.top + height

 

ID2D1Brush

 사각형을 그릴 때 테두리의 색을 지정하는 브러시이다. CreateSolidBrush 메서드[# ID2D1HwndRenderTarget의 메서드]를 이용해 생성할 수 있다. 객체를 만든 것이므로 당연히 사용후 해제도 해주어야 한다.

 

 아래 링크는 CreateSolidBrush를 사용하는 방법이다.

 

Direct2D - ID2D1SolidColorBrush

 단일 색상 브러시를 구현할 때 필요한 인터페이스이다. ID2D1SolidColorBrush  ID2D1HwndRenderTarget에서 생성할 수 있는 브러시에 대한 정보를 담고 있는 객체이다. 사각형 등의 도형을 그릴 때 선의 색

pang2h.tistory.com

 

FLOAT strokeWidth

 선의 폭

 

ID2D1StrokeStyle

 선의 스타일이 지정된 객체이다. CreateStrokeStyle 메서드[# ID2D1Factory 객체에 존재]를 이용해 객체를 생성한다.

 

사용 예제

 크기 50x50인 사각형을 윈도우 (450, 450) 위치에 그린다.

ID2D1HwndRenderTarget* pRT;
ID2D1SolidColorBrush* pBrush;
// ID2D1HwndRenderTarget 객체가 이미 생성되어 있다고 가정한다.
// ID2D1SolidColorBrush 객체가 이미 생성되어 있다고 가정한다.

pRT->DrawRectangle(D2D1::RectU(450, 450, 500, 500), pBrush);

 

# index

728x90
반응형

'DEV > Direct2D' 카테고리의 다른 글

Direct2D에서 MessageBox가 나오지 않는 문제  (0) 2021.04.08
Direct2D - ID2D1SolidColorBrush  (0) 2021.04.05
Direct2D - Resize()  (0) 2021.04.04
Direct2D - Clear()  (0) 2021.04.04
Direct2D - D2D1CreateFactory()  (0) 2021.04.04
Comments