728x90
안녕하세요!
이번 글에서는 OnPaint함수를 알아보겠습니다.
OnPaint 함수는 MFC에서 그리기 작업을 수행하는 함수로, 윈도우 또는 컨트롤의 화면을 그리는 역할을 합니다.
OnPaint 함수를 재정의하여 사용자 정의 그리기 작업을 수행할 수 있습니다.
함수의 역할
- 윈도우나 컨트롤의 화면을 그리는 작업을 수행합니다.
- WM_PAINT 메시지를 처리하며, 화면의 무효 영역을 다시 그리는 작업을 합니다.
- 그리기 작업을 위한 CDC(장치 콘텍스트) 객체를 생성하여 그래픽 작업을 수행합니다.
- 화면의 갱신이 필요한 경우 Invalidate 또는 InvalidateRect 함수를 호출하여 화면을 다시 그릴 수 있습니다.
<예제코드>
void CMFCTESTDlg::OnPaint()
{
if(IsIconic())
{
//생략
}
else
{
CPaintDC dc(this); // CDC 객체 생성
CRect rect(0, 0, 50, 50);
rect.MoveToXY(70, 70);
// 빨간색으로 사각형 그리기
CBrush brush(RGB(255, 0, 0)); // 빨간색 브러시 생성
CBrush* pOldBrush = dc.SelectObject(&brush); // 현재 브러시를 선택하고 이전 브러시를 저장
dc.Rectangle(rect); // 사각형 그리기
dc.SelectObject(pOldBrush); // 이전 브러시로 복원
CDialogEx::OnPaint();
}
}
- 위 예제는 다이얼로그 생성 시 기본적으로 재정의 되어있는 OnPaint함수로 예를 들었습니다. if else문이 없다면 굳이 추가하지 않으셔도 무방합니다.
- OnPaint 함수 내에서 CPaintDC 객체를 생성하여 그래픽 작업을 수행합니다.
- 크기가 50, 50인 CRect객체를 생성하여 MoveToXY함수를 이용해 좌표 70, 70으로 이동하였습니다.
- 빨간색 사각형을 그리기 위해 CBrush 객체를 생성하고 RGB(255, 0, 0)로 빨간색을 지정합니다.
- SelectObject 함수를 사용하여 생성한 브러시를 선택하고, 이전에 선택된 브러시를 pOldBrush에 저장합니다.
- 사각형을 그리기 위해 Rectangle 함수를 호출하고, 인자로는 rect를 전달합니다.
- SelectObject 함수를 사용하여 이전에 선택된 브러시를 복원합니다.
위 예제를 실행하면 OnPaint 함수가 호출될 때, 다이얼로그의 클라이언트 영역에 빨간색 사각형이 그려집니다.
다이얼로그의 크기를 줄여 사각형을 숨긴 후 다시 늘려보아도 사각형이 지워지지 않습니다. (실제로는 지워졌다가 OnPaint함수에 의해 다시 그려진것입니다.)
이를 통해 OnPaint 함수의 역할과 함께 빨간색 사각형을 그리는 예제를 설명하였습니다.
감사합니다!
728x90
'[C++] > MFC 프로그래밍' 카테고리의 다른 글
[C++] MFC 프로그래밍 : 문자열 리스트 (28) | 2023.09.20 |
---|---|
[C++] MFC 프로그래밍 : OnGetMinMaxInfo 함수 (21) | 2023.06.22 |
[C++] MFC 프로그래밍 : ESC/Enter 종료 방지 (21) | 2023.06.19 |
[C++] MFC 프로그래밍 : PreTranslateMessage (36) | 2023.06.18 |
[C++] MFC 프로그래밍 : 이벤트 함수 추가 (31) | 2023.06.18 |