📄 dibdoc.cpp
字号:
{
if(CImgProcess::LowPassDIB(m_hDIB, FD.m_nStreng, FILTER1))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
}
else if(ID_IMAGE_SMOTH_LF2 == uID)
{
CConvoluteDlg FD(1, 10, 3);
if (FD.DoModal() == IDOK)
{
if(CImgProcess::LowPassDIB(m_hDIB, FD.m_nStreng, FILTER2))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
}
else if(ID_IMAGE_SMOTH_LF3 == uID)
{
CConvoluteDlg FD(1, 10, 3);
if (FD.DoModal() == IDOK)
{
if(CImgProcess::LowPassDIB(m_hDIB, FD.m_nStreng, FILTER3))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
}
else if(ID_IMAGE_SHARP_HF1 == uID)
{
CConvoluteDlg FD(1, 10, 3);
if (FD.DoModal() == IDOK)
{
if(CImgProcess::HighPassDIB(m_hDIB, FD.m_nStreng, FILTER1))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0,0); // realize the new palette
UpdateAllViews(NULL);
}
}
}
else if(ID_IMAGE_SHARP_HF2 == uID)
{
CConvoluteDlg FD(1, 10, 3);
if (FD.DoModal() == IDOK)
{
if(CImgProcess::HighPassDIB(m_hDIB, FD.m_nStreng, FILTER2))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0,0); // realize the new palette
UpdateAllViews(NULL);
}
}
}
else if(ID_IMAGE_SHARP_HF3 == uID)
{
CConvoluteDlg FD(1, 10, 3);
if (FD.DoModal() == IDOK)
{
if(CImgProcess::HighPassDIB(m_hDIB, FD.m_nStreng, FILTER3))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0,0); // realize the new palette
UpdateAllViews(NULL);
}
}
}
else if(ID_IMAGE_EDGE_H == uID)
{
EdgeEnhance(HORZ);
}
else if(ID_IMAGE_EDGE_V == uID)
{
EdgeEnhance(VERT);
}
else if(ID_IMAGE_EDGE_VH == uID)
{
EdgeEnhance(VERTHORZ);
}
else if(ID_IMAGE_EDGE_N == uID)
{
EdgeEnhance(NORTH);
}
else if(ID_IMAGE_EDGE_NE == uID)
{
EdgeEnhance(NORTHEAST);
}
else if(ID_IMAGE_EDGE_E == uID)
{
EdgeEnhance(EAST);
}
else if(ID_IMAGE_EDGE_SE == uID)
{
EdgeEnhance(SOUTHEAST);
}
else if(ID_IMAGE_EDGE_S == uID)
{
EdgeEnhance(SOUTH);
}
else if(ID_IMAGE_EDGE_SW == uID)
{
EdgeEnhance(SOUTHWEST);
}
else if(ID_IMAGE_EDGE_W == uID)
{
EdgeEnhance(WEST);
}
else if(ID_IMAGE_EDGE_NW == uID)
{
EdgeEnhance(NORTHWEST);
}
else if(ID_IMAGE_EDGE_LP1 == uID)
{
EdgeEnhance(LAP1);
}
else if(ID_IMAGE_EDGE_LP2 == uID)
{
EdgeEnhance(LAP2);
}
else if(ID_IMAGE_EDGE_LP3 == uID)
{
EdgeEnhance(LAP3);
}
else if(ID_IMAGE_EDGE_LP4 == uID)
{
EdgeEnhance(LAP4);
}
else if(ID_IMAGE_CONTOUR_H == uID)
{
if(CImgProcess::ContourDIB(m_hDIB, TRUE))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
else if(ID_IMAGE_CONTOUR_V == uID)
{
if(CImgProcess::ContourDIB(m_hDIB, FALSE))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
else if(ID_IMAGE_CONTOUR_SOBER == uID)
{
EdgeEnhance(SOBEL);
}
else if(ID_IMAGE_CONTOUR_HOUGH == uID)
{
EdgeEnhance(HOUGH);
}
else if(ID_IMAGE_REVERSE == uID)
{
if(CImgProcess::ReverseDIB(m_hDIB))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
else if(ID_IMAGE_FFT == uID)
{
if(CImgProcess::FFTDIB(m_hDIB))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
else if(ID_IMAGE_DCT == uID)
{
if(CImgProcess::DCTDIB(m_hDIB))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
else if(ID_IMAGE_WALH == uID)
{
if(CImgProcess::WALhDIB(m_hDIB))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
else if(ID_IMAGE_EROSION_H == uID)
{
if(CImgProcess::ErosionDIB(m_hDIB, TRUE))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
else if(ID_IMAGE_EROSION_V == uID)
{
if(CImgProcess::ErosionDIB(m_hDIB, FALSE))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
else if(ID_IMAGE_DILATION_H == uID)
{
if(CImgProcess::DilationDIB(m_hDIB, TRUE))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
else if(ID_IMAGE_DILATION_V == uID)
{
if(CImgProcess::DilationDIB(m_hDIB, FALSE))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
else if(ID_IMAGE_CLOSE_H == uID)
{
if(CImgProcess::MorphCloseDIB(m_hDIB, TRUE))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
else if(ID_IMAGE_CLOSE_V == uID)
{
if(CImgProcess::MorphCloseDIB(m_hDIB, FALSE))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
else if(ID_IMAGE_OPEN_H == uID)
{
if(CImgProcess::MorphOpenDIB(m_hDIB, TRUE))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
else if(ID_IMAGE_OPEN_V == uID)
{
if(CImgProcess::MorphOpenDIB(m_hDIB, FALSE))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
else if(ID_IMAGE_THIN == uID)
{
if(CImgProcess::ThinningDIB(m_hDIB))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
else
{
AfxMessageBox("Hi, what are you doing?");
}
CTimeSpan t_Span = CTime::GetCurrentTime() - t_Start;
CString strStatus = t_Span.Format("Elapsed time- %H : %M : %S");
((CMainFrame*)AfxGetMainWnd())->SetStatusText(0, strStatus);
}
void CDIBDoc::OnUpdateImageProcess(CCmdUI *pCmdUI)
{
pCmdUI->Enable(NULL != m_hDIB);
}
void CDIBDoc::EdgeEnhance(int nAlgorithm)
{
CConvoluteDlg FD(1, 10, 3);
if (FD.DoModal() == IDOK)
{
if(CImgProcess::EdgeEnhanceDIB(m_hDIB, FD.m_nStreng, nAlgorithm))
{
InitDIBData();
SetModifiedFlag(TRUE);
// OnRealizePal((WPARAM)0, 0); // realize the new palette
UpdateAllViews(NULL);
}
}
}
BOOL CDIBDoc::EnumFile(LPCTSTR lpszPathName)
{
ASSERT(strlen(lpszPathName) > 0);
BeginWaitCursor();
char *pExt=strrchr(lpszPathName,'.');
char cExt[4];
strcpy(cExt,++pExt);
_strlwr(cExt);
DeleteContents();
HDIB hDIB = NULL;
if (strcmp(cExt,"raw")==0)
{
CRaw raw;
if(!raw.ReadFromFile(lpszPathName))
{
return FALSE;
}
hDIB = raw.Show();
}
else if(strcmp(cExt,"bmp")==0
|| strcmp(cExt,"dib")==0
|| strcmp(cExt,"ddb")==0)
{
CFile file;
CFileException fe;
if (!file.Open(lpszPathName, CFile::modeRead | CFile::shareDenyWrite, &fe))
{
fe.ReportError();
return NULL;
}
// replace calls to Serialize with ReadDIBFile function
TRY
{
hDIB = ::ReadDIBFile(file);
}
CATCH (CFileException, eLoad)
{
file.Abort(); // will not throw an exception
eLoad->ReportError();
hDIB = NULL;
return NULL;
}
END_CATCH
if (hDIB == NULL)
{
// may not be DIB format
CString strMsg;
strMsg.LoadString(IDS_CANNOT_LOAD_DIB);
MessageBox(NULL, strMsg, NULL, MB_ICONINFORMATION | MB_OK);
return NULL;
}
}
else if(strcmp(cExt,"jpg")==0 || strcmp(cExt,"jpeg")==0)
{
UINT height,width;
BYTE *pData = NULL;
pData = JpegFile::JpegFileToRGB(lpszPathName, &width, &height);
if(NULL == pData)return NULL;
JpegFile::BGRFromRGB(pData, width, height);
JpegFile::VertFlipBuf(pData, width * 3, height);
UINT widthDW;
BYTE *pDIB = JpegFile::MakeDwordAlignedBuf(pData, width, height, &widthDW);
delete []pData;
if(NULL == pDIB)
{
char strErr[100];
sprintf(strErr, "Error: %d", GetLastError());
MessageBox(AfxGetMainWnd()->GetSafeHwnd(), strErr, "Read File Error",
MB_OK|MB_ICONERROR);
}
hDIB = ::ShowJPEG(width, height, pDIB);
delete []pDIB;
}
else if(strcmp(cExt, "gif") == 0)
{
hDIB = ReadGIF(lpszPathName);
}
else if(strcmp(cExt,"pcx") == 0)
{
hDIB = ::ReadPCX256(lpszPathName);
}
else
{
// CString strMsg;
// strMsg.Format("%s\n不是图像文件!", lpszPathName);
AfxMessageBox("不识别的文件格式!");
return FALSE;
}
if(NULL != hDIB)
{
ReplaceHDIB(hDIB);
InitDIBData();
}
else
{
return FALSE;
}
SetPathName(lpszPathName);
char *pTitle = strrchr(lpszPathName, '\\');
SetTitle(++pTitle);
SetModifiedFlag(FALSE);
EndWaitCursor();
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -