MFC: 화면에 글자, 도형 그리기
매주 설계 계획이나 결과에 대해 발표.
기말고사 때 발표.
중간고사까지만 함께 수업. 이후에는 우리가 주도.
주제?
- 이미 다 나와있는 거지만 난이도가 있어야 함.
- 여러분이 응용할 수 있는 것
난 빈말하는 사람 아녜요.
저번주에도 나왔는데 OnDraw를 사용해서 화면에 뭔가를 뿌려준다고 이야기했습니다.
밑에는 기본적으로
Device Context? => DC. 여기서 원하는 속성 정의해 준 게 위 부분.
GetDC를 포인터로 지정해 주고 밑에 속성을 정의해 주는데,
TextOutW의 100, 50는 뭘까요? 좌표. 근데 내가 실행시킨 걸 보면 왼쪽 제일 위에서 시작하지만 이미지 같은 경우 왼쪽 제일 밑에서 시작하는 경우도 있다고 알고 계세요.
항상 메모리 해제해 줘야 합니다. ReleaseDC를 해서… 기본적인 규칙입니다.
CClientDC dc(this);
dc.TextOutW(100, 100, _T("MFC Application"));
를 보면 위의 것과 조금 다른데 위의 것을 조금 편하게 해주기 위한 파생클래스로 CClientDC라는 게 있습니다. CClientDC는 생성자, DC에서 가지고 온 다음에는 자동적으로 반납합니다. 메모리 해제를 바로 해 줍니다. TextOutW는 화면에 텍스트 출력해주는 함수입니다.
또 DrawText() 함수로 텍스트 출력을 할 수 있어요. 보통 문자의 String이라고 하잖아요?
Int DrawText(Cstring str, LPRECT lpRect, UNIT nFormat);
Child Window 만들듯이 |(or)로 추가할 수 있다.
- SetTextColor() // 색상 변경
- SetBkColor() // 텍스트 배경색
- SetBkMode // 배경 모드 지정
- QPAQUE(불투명)
- TRANSPARENT(투명)
3개가 다 쓰이면 화면의 정 중앙에 들어가요. 요 3개가.
1.2 도형 그리기
- 직선 그리기 함수
- 항상 시작점과 끝점 두개가 들어가야…
- 좌표를 나타내는 포인트에 대한 구조체가 사용됨.
CRect: 사각형을 나타내는 구조체.
pDC->MoveTo(100, 100);
pDC->LineTo(200,200);
위와 같이 하면 대각선이 그어지겠죠?
pDC->Rectangle(300, 100, 400, 200);
직사각형. (시작점의 x축, 시작점의 y축, 끝점의 x축, 끝점의 y축)
pDC->Ellipse(500, 100, 600, 200);
Ellipse : 타원(원)을 그리는 부분이에요. 사각형과 비슷한 방법으로 선언.
On이 붙는 함수는 메시지 핸들러라고 부릅니다.
메시지 핸들러: 앞에다 무언가 다른것을 구동시키면서 동작시키는 함수
위 소스를 보면 클래스를 통해(아래쪽 도형들) 만들 수도 있다는 것을 볼 수 있다.
3조.
사각형은 계속 반복됩니다.
그리기가 완료되어 사용이 끝난 브러쉬는 펜과 같이 원상 복귀.
내가 내 주석을 달아야 내 것으로 만들 수 있다.
사각형 관련해서 실습!
'이론 수업 > 윈도우 프로그래밍 설계' 카테고리의 다른 글
3월 11일: Visual C++ (0) | 2020.09.16 |
---|