더북(TheBook)

간혹 StretchDIBits 함수를 사용하여 비트맵을 축소하여 보여주고 싶은 경우가 있을 수가 있는데, 이 경우에는 조심해야 할 사항이 있다. 비트맵을 원본 크기보다 작은 크기로 출력하고자 할 경우, 출력된 영상이 전체적으로 검정색 계열로 지저분하게 출력될 수 있기 때문이다. 이런 경우 비트맵 늘이기 모드를 변경해주어야 깔끔한 영상 출력이 가능하다. Windows에서는 비트맵 늘이기 모드를 지정할 수 있는 SetStretchBltMode 함수를 제공한다.

int SetStretchBltMode(
    HDC        hdc,
    int        iStretchMode
);

SetStretchBltMode 함수의 두 번째 인자가 늘이기 모드를 지정하는 역할을 한다. 일반적인 사진과 같은 비트맵을 늘여서 화면에 출력하고자 할 경우에는 이 모드 값을 COLORONCOLOR으로 지정해주어야 깔끔한 영상 출력이 가능하다. 예를 들어, 640×480 크기의 비트맵 영상이 있을 경우, 이 영상의 가로, 세로 크기를 1/2만큼 축소하여 화면에 출력하고 싶다면 아래와 같이 코드를 작성할 수 있다. 아래 코드에서 hdc, lpBits, lpBitsInfo는 이미 적절하게 지정되어 있다고 가정한다.

::SetStretchBltMode(hdc, COLORONCOLOR);
::StretchDIBits(hdc, // hdc
    0,               // XDest
    0,               // YDest
    480 / 2,         // nDestWidth
    640 / 2,         // nDestHeight
    0,               // XSrc
    0,               // YSrc
    480,             // nSrcWidth
    640,             // nSrcHeight
    lpBits,          // lpBits
    lpBitsInfo,      // lpBitsInfo
    DIB_RGB_COLORS,  // wUsage
    SRCCOPY);        // dwROP
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.