Study/CxImage2009. 3. 18. 13:58

영상 파일을 읽어 오기 (Doc 클래스)

  - CxImage* m_pImage 변수 정의

  - 가상함수 정의창에서 OnOpenDocument() 함수 재정의

  - 코드 삽입

   m_pImage = new CxImage();
   m_pImage->Load(lpszPathName, 0);

 

종료시 메모리 해제 (Doc 클래스)

  - 가상함수 정의창에서 DeleteContents()함수 재정의

  - 코드삽입

     if(m_pImage)
    {
      delete m_pImage;
    }

 

파일 열기 함수 (App 클래스)

  - Class Wizard에서 ID_FILE_OPEN 선택후 OnFileOpen() 함수 재정의.

  - 메시지 맵에서 ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen) 주석처리

  - 코드 삽입

   char szFilter[] = "지원 영상처리 파일(*.bmp, *.jpg, *.gif, *.png, *.tif) |*.bmp; *.jpg; *.gif; *.png; *.tif|| ";
   CFileDialog fileDlg(TRUE, NULL, NULL, OFN_EXPLORER | OFN_HIDEREADONLY, szFilter);

   if(fileDlg.DoModal() == IDOK)
   {
      OpenDocumentFile(fileDlg.GetPathName());
   }

 

영상 출력하기 (View 클래스)

  - OnDraw()함수에 코드 삽입

  if(pDoc->m_pImage)
  {
    CRect rect = CRect(0, 0, (int)pDoc->m_pImage->GetWidth(), (int)pDoc->m_pImage->GetHeight());
    GetClientRect(&rect);

    pDoc->m_pImage->Draw(pDC->GetSafeHdc(), rect, 0);
  }

 

영상 크기에 따른 스크롤 지원하기 (View 클래스)

  - OnInitialUpdate() 함수에 코드삽입

    CKDY013Doc* pDoc = GetDocument();

    CScrollView::OnInitialUpdate();

    CSize sizeTotal;
    if(pDoc->m_pImage)
    {
        sizeTotal = CSize(pDoc->m_pImage->GetWidth(),
        pDoc->m_pImage->GetHeight());
    }
    else
    {
       sizeTotal.cx = sizeTotal.cy = 100;
    }

    SetScrollSizes(MM_TEXT, sizeTotal);
    ResizeParentToFit(FALSE);

 

처음 실행시 나타나는 창 제거하기 (App 클래스)

  - Instantance() 함수 ParseCommandLine(cmdInfo); 다음에 코드 삽입

    CKDY013Doc* pDoc = GetDocument();

    CScrollView::OnInitialUpdate();

    CSize sizeTotal;


    if(pDoc->m_pImage)
    {
        sizeTotal = CSize(pDoc->m_pImage->GetWidth(),
        pDoc->m_pImage->GetHeight());
    }
    else
    {
       sizeTotal.cx = sizeTotal.cy = 100;
    }

    SetScrollSizes(MM_TEXT, sizeTotal);
    ResizeParentToFit(FALSE);

 

드래그 앤 드롭으로 영상 파일 열기 (APP 클래스)

  - Instantance() 함수  if (!ProcessShellCommand(cmdInfo)) return FALSE; 다음에 코드 삽입

  pMainFrame->DragAcceptFiles();

 

영상의 크기에 맞춰 보여주기 (Frame 클래스)

  - 가상함수 정의창에서 ActivateeFrame 함수 선택

  - Frame 클래스에 Doc헤더파일 추가

  - 코드 삽입

   CRect rect, rectClient;
   GetWindowRect(&rect);
   GetClientRect(&rectClient);

   CxImage *m_pImage = ((CKDY013Doc *)GetActiveDocument())->m_pImage;

   if(m_pImage)
   {
     int height = (int)m_pImage->GetHeight() + rect.Height() - rectClient.Height() + 5;
     int width = (int)m_pImage->GetWidth() + rect.Width() - rectClient.Width() + 5;

     SetWindowPos(NULL, 0, 0, width, height, SWP_NOMOVE | SWP_SHOWWINDOW);
   }

 

영상 저장(Doc 클래스)

  - 가상함수 정의창에서 OnSaveDocument() 함수 재정의.

  - 코드 삽입

   int format_type = 0;
 
   // 확장자명을 찾기
   char *ext = (char*)strstr(lpszPathName, ".");

  // 소문자로 변환하기
   ext = strlwr(ext);
 
  // 확장자명을 기준으로 저장한다.
   if(!strcmp(ext, ".bmp"))
   {
      format_type = CXIMAGE_FORMAT_BMP;
   }
   else if(!strcmp(ext, ".gif"))
  {
      format_type = CXIMAGE_FORMAT_GIF;
  }
  else if(!strcmp(ext, ".jpg"))
  {
     format_type = CXIMAGE_FORMAT_JPG;
  }
  else if(!strcmp(ext, ".png"))
  {
     format_type = CXIMAGE_FORMAT_PNG;
  }
  else
  {
     AfxMessageBox("CXIMAGE_FORMAT을 확인하여 주십시요.", MB_OK |

                              MB_ICONSTOP);
     return TRUE;
  }
 
  return m_pImage->Save(lpszPathName, format_type);

 

'Study > CxImage' 카테고리의 다른 글

컬러 공간 분석  (0) 2009.03.23
CxImage 제공 함수  (0) 2009.03.18
라이브러리 함수 사용자 작성  (0) 2009.03.18
CxImage 라이브러리 함수  (0) 2009.03.18
CxImage 소개 및 기본 설치  (0) 2009.03.11
Posted by 열ㅇl