보통 윈도우에서 그리기를 할 때 메모리 DC(CompatibleDC)와 메모리 Bitmap(CompatibleBitmap)를 사용하여 BitBlt 함수로 드로잉 작업을 한다.
그래서 이에 대해 개인적으로 정리를 하고자 한다.
BitBlt 함수 정리
-
메모리 DC는 CreateCompatibleDC를 사용하여 생성할 수 있다.
- 이렇게 생성한 DC는 더블 버퍼링등에 활용한다.
- DC의 전경색은 SetTextColor로 변경할 수 있다.
- DC의 배경색은 SetBkColor로 변경할 수 있다.
- 메모리 비트맵은 CreateCompatibleBitmap을 사용하여 만들어진다.
-
CreateCompatibleBitmap 함수는 인자로 넘겨지는 DC와 호환되는 비트맵을 생성한다.
-
- 메모리 비트맵은 메모리 DC에 선택(SelectObject, SelectBitmap) 한 다음 사용한다.
- 메모리 비트맵의 이미지를 출력하기 위해선 메모리 DC를 소스 DC인자로 여러 그리기 함수를 호출한다.
-
BitBlt 함수는 다음과 같은 특성을 가진다.
- 마지막 인자인 dwRop 인자로 여러가지 그리기 모드를 설정할 수 있다.
- 소스와 대상 DC의 칼라 포맷이 다르다면 이 함수는 소스 칼라 포맷을 대상 칼라 포맷에 맞도록 변환한다. 이때 대상 비트맵(DC가 아닐까)의 전경색과 배경색이 변환에 사용된다.
- 흑백 비트맵을 칼라 비트맵으로 변환할 때, white bit(1)을 배경색으로 변환하고 black bit(0)을 전경색으로 변환한다. 이 때는 대상 DC의 전경색과 배경색이 사용된다.
- 칼라 비트맵을 흑백 비트맵으로 변환할 때, 배경색과 일치 하는 픽셀을 white로 그렇지 않은 픽셀을 black로 변환한다. 이 때는 칼라 DC의 전경색과 배경색을 사용한다.