Keisa 2024. 12. 31. 14:13

WinAPI의 DC(Device Context)는 그래픽 출력 및 장치와의 상호작용을 위한 중요한 개념입니다. DC는 Windows의 GDI(Graphics Device Interface)에서 화면, 프린터, 메모리 비트맵 등 그래픽 출력 장치와 통신하는 데 사용되는 구조체입니다. DC는 그래픽 객체 및 그들의 속성, 그리고 출력 설정을 포함합니다.

화면 출력에 필요한 모든 정보를 가지는 데이터 구조, GDI 모듈에 의해서 관리된다.

DC의 주요 특징

  1. 그래픽 출력 대상 관리
    DC는 출력 장치(화면, 프린터, 메모리)를 지정하고, 해당 장치로 그래픽을 그릴 때 사용하는 매개체입니다.
  2. 속성 및 상태 저장
    DC는 색상, 브러시, 펜, 폰트, 배경 색상 등과 같은 그래픽 속성을 저장합니다. 이러한 속성을 설정하고, GDI 함수를 통해 그래픽 작업을 수행할 수 있습니다.
  3. DC 종류
    • 화면 DC(Screen DC): 화면에 그래픽을 출력하는 데 사용됩니다.
    • 메모리 DC(Memory DC): 메모리 내에서 그래픽 작업을 수행하기 위한 DC로, 더블 버퍼링 또는 비트맵 조작에 사용됩니다.
    • 프린터 DC(Printer DC): 프린터 장치와 상호작용하기 위해 사용됩니다.

 

메모리 DC 활용 예

메모리 DC는 깜빡임을 방지하거나 오프스크린 렌더링을 위해 사용됩니다.

HDC hdc = GetDC(hwnd);
HDC memDC = CreateCompatibleDC(hdc);

HBITMAP hBitmap = CreateCompatibleBitmap(hdc, width, height);
SelectObject(memDC, hBitmap);

// 메모리 DC에서 그리기 작업 수행
Rectangle(memDC, 10, 10, 100, 100);

// 메모리 DC의 내용을 화면 DC로 복사
BitBlt(hdc, 0, 0, width, height, memDC, 0, 0, SRCCOPY);

// 자원 해제
DeleteObject(hBitmap);
DeleteDC(memDC);
ReleaseDC(hwnd, hdc);

 

WinAPI의 DC는 그래픽 작업에서 기본적인 역할을 합니다. DC의 종류와 사용법을 이해하면 효율적인 그래픽 처리가 가능합니다. 추가적으로, GDI+와 Direct2D 같은 고급 기술도 DC 기반으로 작동하는 경우가 많습니다.