간혹 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
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.