[MFC, DLL] Image를 그레이 스케일 버퍼로 생성후 그려주는 다이얼로그 소스
MFC&ActiveX/MFC DLLs 2008. 6. 25. 02:29 |그레이 스케일로 표현해주는 코드가 일부 들어가 있는 소스입니다.
MFC DLL 형태로 제작되어 있으며, 바로 이전의 게시물과 거의 동일한 구조입니다.
몇가지 단위 테스트를 위해서 제작된 샘플 프로젝트입니다.
관련 소스 :
.
이외의 생성자 인자로서는 해당 width, height를 입력해줄 수 있으며,
내부 코드에서는 해당 다이얼로그에 맞도록 리셈플링 처리가 되어 있습니다.
실행파일 :
CxImage 라이브러리 폴더를 해당 프로젝트에 추가 한다.
1. 인클루드를 추가한다.
2. 해당 경로명의 확장자(이미지 타입)을 얻어 오는 함수를 추가한다.
// CDlgSequencePage 메시지 처리기입니다.
int GetTypeFromFileName(CString& str)
{
CString fileName = str;
CString ext3=fileName.Right(3);
CString ext4=fileName.Right(4);
#if CXIMAGE_SUPPORT_PNG
if(ext3.CompareNoCase(_T("png"))==0)
return CXIMAGE_FORMAT_PNG;
#endif
#if CXIMAGE_SUPPORT_BMP
else if(ext3.CompareNoCase(_T("bmp"))==0)
return CXIMAGE_SUPPORT_BMP;
#endif
#if CXIMAGE_SUPPORT_JPG
else if(ext3.CompareNoCase(_T("jpg"))==0)
return CXIMAGE_SUPPORT_JPG;
#endif
return CXIMAGE_FORMAT_UNKNOWN;
}
3. 이미지 읽어 오는 함수를 추가한다.
CxImage* CDlgProgrammingPage::GetImage(CString& strPath)
{
int nImageType=GetTypeFromFileName(strPath);
if(nImageType==CXIMAGE_FORMAT_UNKNOWN) {
MessageBox("해당 파일을 읽을 수 없습니다.", "에러", MB_OK);
return NULL;
}
CxImage* pImg = new CxImage(strPath, nImageType);
if(pImg->IsValid() == false) {
delete pImg;
MessageBox("해당 파일을 읽을 수 없습니다.", "에러", MB_OK);
return NULL;
}
return pImg;
}
관련 라이브러리 :