일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Win32
- Direct2D
- c#
- 포인터
- doit코틀린프로그래밍
- 티스토리
- 연산자
- c
- CS
- Javascript
- VS ERROR
- Desktop
- 배열
- 지식나눔강좌
- Tips프로그래밍강좌
- Visual Studio
- 문법
- c++
- 함수
- Kotlin
- 알고리즘
- 백준
- Windows
- tipssoft
- 프로그래밍
- 리뷰
- Programming
- 김성엽
- 이지스퍼블리싱
- Tips강좌
- Yesterday
- Today
- Total
F.R.I.D.A.Y.
Direct2D - DrawRectangle() 본문
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를 사용하는 방법이다.
FLOAT strokeWidth
선의 폭
ID2D1StrokeStyle
선의 스타일이 지정된 객체이다. CreateStrokeStyle 메서드[# ID2D1Factory 객체에 존재]를 이용해 객체를 생성한다.
사용 예제
크기 50x50인 사각형을 윈도우 (450, 450) 위치에 그린다.
ID2D1HwndRenderTarget* pRT;
ID2D1SolidColorBrush* pBrush;
// ID2D1HwndRenderTarget 객체가 이미 생성되어 있다고 가정한다.
// ID2D1SolidColorBrush 객체가 이미 생성되어 있다고 가정한다.
pRT->DrawRectangle(D2D1::RectU(450, 450, 500, 500), pBrush);
# index
'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 |