7.4.2 비트 평면 분할 메뉴 및 메뉴 이벤트 처리기 추가

    ImageTool 프로그램에 비트 평면 분할을 위한 메뉴 항목과 메뉴 이벤트 처리 함수를 추가해보자. Visual Studio 리소스 뷰에서 IDR_ImageToolTYPE 메뉴 항목을 더블 클릭하여 메뉴 편집 창이 나타나게 한 후, [이미지] 팝업 메뉴 맨 아래에 [비트 평면 분할] 메뉴 항목을 추가하자. [비트 평면 분할] 메뉴 항목의 속성은 표 7-8을 참고하라.

    표 7-8 [비트 평면 분할] 메뉴 항목 속성

    ID

    Caption

    ID_BITPLANE_SLICING

    비트 평면 분할(&P)

    메뉴 항목을 추가하였으면, 이제 이 메뉴에 대한 메뉴 이벤트 처리 함수를 추가하자. [비트 평면 분할] 메뉴 항목에 대한 이벤트 처리기 마법사에 입력할 정보는 표 7-9를 참고하라. 메뉴 이벤트 처리 함수 OnBitplaneSlicing에 추가할 소스 코드는 소스 7-14에 나타내었다.

    표 7-9 [비트 평면 분할] 메뉴 이벤트 처리기 정보

    명령 이름(ID)

    처리 클래스

    메시지 형식

    처리기 이름

    ID_BITPLANE_SLICING

    CImageToolDoc

    COMMAND

    OnBitplaneSlicing

    소스 7-14 비트 평면 분할 메뉴 이벤트 처리 함수(ImageToolDoc.cpp)
    void CImageToolDoc::OnBitplaneSlicing()
    {
        CONVERT_DIB_TO_BYTEIMAGE(m_Dib, img)
            IppByteImage imgPlane;
    
        for (int i = 0; i < 8; i++)
        {
            IppBitPlane(img, imgPlane, i);
            CONVERT_IMAGE_TO_DIB(imgPlane, dib)
                AfxNewBitmap(dib);
        }
    
        AfxPrintInfo(_T("[비트 평면 분할] 입력 영상: %s"), GetTitle());
    }
    

    OnBitplaneSlicing 함수에서 for 루프 안을 주목하기 바란다. 이 for 루프는 i 값이 0부터 7까지 증가할 것이며, 매 루프마다 IppBitPlane 함수를 호출하고 있다. IppBitPlane 함수의 세 번째 인자로 i 값을 넘겨줌으로써 하위 0번째부터 7번째 비트에 해당하는 비트 평면을 생성하고, 그 결과는 imgPlane에 저장된다. 그리고 imgPlaneIppDib 타입으로 변환한 후, AfxNewImage 함수를 이용하여 새 창으로 나타낸다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.