📄 dipdoc.cpp
字号:
UpdateAllViews(NULL);
}
void CDipDoc::OnEnhaSmooth()
{
// 模板高度
int nTempH;
// 模板宽度
int nTempW;
// 模板系数
float fTempC;
// 模板中心元素X坐标
int nTempXc;
// 模板中心元素Y坐标
int nTempYc;
// 模板元素数组
float aValue[25];
// 创建对话框
CDlgSmooth dlgPara;
// 给模板数组赋初值(为平均模板)
aValue[0] = 1.0;
aValue[1] = 1.0;
aValue[2] = 1.0;
aValue[3] = 1.0;
aValue[4] = 1.0;
aValue[5] = 1.0;
aValue[6] = 1.0;
aValue[7] = 1.0;
aValue[8] = 1.0;
aValue[9] = 1.0;
aValue[10] = 1.0;
aValue[11] = 1.0;
aValue[12] = 1.0;
aValue[13] = 1.0;
aValue[14] = 1.0;
aValue[15] = 1.0;
aValue[16] = 1.0;
aValue[17] = 1.0;
aValue[18] = 1.0;
aValue[19] = 1.0;
aValue[20] = 1.0;
aValue[21] = 1.0;
aValue[22] = 1.0;
aValue[23] = 1.0;
aValue[24] = 1.0;
// 初始化对话框变量值
dlgPara.m_intType = 0;
dlgPara.m_iTempH = 3;
dlgPara.m_iTempW = 3;
dlgPara.m_iTempMX = 1;
dlgPara.m_iTempMY = 1;
dlgPara.m_fTempC = 9.0;
dlgPara.m_fpArray = aValue;
// 显示对话框,提示用户设定平移量
if (dlgPara.DoModal() != IDOK)
{
// 返回
return;
}
// 获取用户设定的平移量
nTempH = dlgPara.m_iTempH;
nTempW = dlgPara.m_iTempW;
nTempXc = dlgPara.m_iTempMX;
nTempYc = dlgPara.m_iTempMY;
fTempC = dlgPara.m_fTempC;
// 删除对话框
delete dlgPara;
//创建点处理CPointPro类对象
CAreaPro AreaPro( m_pDibObject );
// 更改光标形状
BeginWaitCursor();
AreaPro.Smoothing(aValue, fTempC, nTempW, nTempH, nTempXc, nTempYc);
// 恢复光标
EndWaitCursor();
// 更新视图
UpdateAllViews(NULL);
}
void CDipDoc::OnPointPseudocolor()
{
CDlgColor dlgPara;
// 初始化变量值
if (m_nColorIndex >= 0)
{
// 初始选中当前的伪彩色
dlgPara.m_nColor = m_nColorIndex;
}
else
{
// 初始选中灰度伪彩色编码表
dlgPara.m_nColor = 0;
}
// 指向名称数组的指针
dlgPara.m_lpColorName = (LPSTR) ColorScaleName;
// 伪彩色编码数目
dlgPara.m_nColorCount = COLOR_SCALE_COUNT;
// 名称字符串长度
dlgPara.m_nNameLen = sizeof(ColorScaleName) / COLOR_SCALE_COUNT;
// 显示对话框,提示用户设定平移量
if (dlgPara.DoModal() != IDOK)
{
// 返回
return;
}
// 获取用户的设定
int nColor = dlgPara.m_nColor;
// 删除对话框
delete dlgPara;
CPointPro PointOperation( m_pDibObject );
// 更改光标形状
BeginWaitCursor();
// 调用ReplaceColorPal()函数变换调色板
PointOperation.ReplaceColorPal(m_pDibObject, (BYTE*) ColorsTable[nColor]);
// 设置脏标记
//SetModifiedFlag(TRUE);
// 更新视图
UpdateAllViews(NULL);
// 恢复光标
EndWaitCursor();
}
void CDipDoc::OnEnhaGradsharp()
{
//创建点处理CPointPro类对象
CAreaPro AreaPro( m_pDibObject );
// 更改光标形状
BeginWaitCursor();
AreaPro.GradSharping(10);
// 恢复光标
EndWaitCursor();
// 更新视图
UpdateAllViews(NULL);
}
void CDipDoc::OnEnhaMidianF()
{
// 窗口高度
int nTempH;
// 窗口宽度
int nTempW;
// 窗口中心元素X坐标
int nTempXc;
// 窗口中心元素Y坐标
int nTempYc;
// 排序方式
int nSortType;
// 创建对话框
CDlgMedianFilter dlgPara;
// 初始化对话框变量值
dlgPara.m_nWindowSize = 0;
dlgPara.m_iTempH = 3;
dlgPara.m_iTempW = 3;
dlgPara.m_iTempMX = 1;
dlgPara.m_iTempMY = 1;
dlgPara.m_nSortType = 0;
// 显示对话框,提示用户设定平移量
if (dlgPara.DoModal() != IDOK)
{
// 返回
return;
}
// 获取用户设定的平移量
nTempH = dlgPara.m_iTempH;
nTempW = dlgPara.m_iTempW;
nTempXc = dlgPara.m_iTempMX;
nTempYc = dlgPara.m_iTempMY;
nSortType = dlgPara.m_nSortType;
// 删除对话框
delete dlgPara;
//创建点处理CPointPro类对象
CAreaPro AreaPro( m_pDibObject );
// 更改光标形状
BeginWaitCursor();
AreaPro.MedianFilter(nSortType, nTempW, nTempH, nTempXc, nTempYc);
// 恢复光标
EndWaitCursor();
// 更新视图
UpdateAllViews(NULL);
}
void CDipDoc::OnEnhaTempsharp()
{
// 模板高度
int nTempH;
// 模板宽度
int nTempW;
// 模板系数
float fTempC;
// 模板中心元素X坐标
int nTempXc;
// 模板中心元素Y坐标
int nTempYc;
// 模板元素数组
float aValue[25];
// 方向元素数组
int nDirection[8];
// 创建对话框
CEdgeDetDlg dlgPara;
// 给模板数组赋初值(为Roberts模板1)
aValue[0] = -1.0;
aValue[1] = 0.0;
aValue[2] = 0.0;
aValue[3] = 0.0;
aValue[4] = 0.0;
aValue[5] = 0.0;
aValue[6] = 1.0;
aValue[7] = 0.0;
aValue[8] = 0.0;
aValue[9] = 0.0;
aValue[10] = 0.0;
aValue[11] = 0.0;
aValue[12] = 0.0;
aValue[13] = 0.0;
aValue[14] = 0.0;
aValue[15] = 0.0;
aValue[16] = 0.0;
aValue[17] = 0.0;
aValue[18] = 0.0;
aValue[19] = 0.0;
aValue[20] = 0.0;
aValue[21] = 0.0;
aValue[22] = 0.0;
aValue[23] = 0.0;
aValue[24] = 0.0;
// 初始化对话框变量值
dlgPara.m_intType = 0;
dlgPara.m_iTempH = 3;
dlgPara.m_iTempW = 3;
dlgPara.m_iTempMX = 1;
dlgPara.m_iTempMY = 1;
dlgPara.m_fTempC = 1.0;
dlgPara.m_fpArray = aValue;
dlgPara.m_nDirection = nDirection;
// 显示对话框,提示用户设定平移量
if (dlgPara.DoModal() != IDOK)
{
// 返回
return;
}
// 获取用户设定的平移量
nTempH = dlgPara.m_iTempH;
nTempW = dlgPara.m_iTempW;
nTempXc = dlgPara.m_iTempMX;
nTempYc = dlgPara.m_iTempMY;
fTempC = dlgPara.m_fTempC;
// 删除对话框
delete dlgPara;
//创建点处理CPointPro类对象
CAreaPro AreaPro( m_pDibObject );
// 更改光标形状
BeginWaitCursor();
AreaPro.Sharping(aValue, nDirection);
// 恢复光标
EndWaitCursor();
// 更新视图
UpdateAllViews(NULL);
}
void CDipDoc::OnEnhaLapsharp()
{
// 模板高度
int nTempH;
// 模板宽度
int nTempW;
// 模板系数
float fTempC;
// 模板中心元素X坐标
int nTempXc;
// 模板中心元素Y坐标
int nTempYc;
// 模板元素数组
float aValue[25];
// 创建对话框
CLapDlg dlgPara;
// 给模板数组赋初值(为平均模板)
aValue[0] = -1.0;
aValue[1] = -1.0;
aValue[2] = -1.0;
aValue[3] = 0.0;
aValue[4] = 0.0;
aValue[5] = -1.0;
aValue[6] = 9.0;
aValue[7] = -1.0;
aValue[8] = 0.0;
aValue[9] = 0.0;
aValue[10] = -1.0;
aValue[11] = -1.0;
aValue[12] = -1.0;
aValue[13] = 0.0;
aValue[14] = 0.0;
aValue[15] = 0.0;
aValue[16] = 0.0;
aValue[17] = 0.0;
aValue[18] = 0.0;
aValue[19] = 0.0;
aValue[20] = 0.0;
aValue[21] = 0.0;
aValue[22] = 0.0;
aValue[23] = 0.0;
aValue[24] = 0.0;
// 初始化对话框变量值
dlgPara.m_intType = 0;
dlgPara.m_iTempH = 3;
dlgPara.m_iTempW = 3;
dlgPara.m_iTempMX = 1;
dlgPara.m_iTempMY = 1;
dlgPara.m_fTempC = 1.0;
dlgPara.m_fpArray = aValue;
// 显示对话框,提示用户设定平移量
if (dlgPara.DoModal() != IDOK)
{
// 返回
return;
}
// 获取用户设定的平移量
nTempH = dlgPara.m_iTempH;
nTempW = dlgPara.m_iTempW;
nTempXc = dlgPara.m_iTempMX;
nTempYc = dlgPara.m_iTempMY;
fTempC = dlgPara.m_fTempC;
// 删除对话框
delete dlgPara;
//创建点处理CPointPro类对象
CAreaPro AreaPro( m_pDibObject );
// 更改光标形状
BeginWaitCursor();
AreaPro.LapSharping(aValue, fTempC, nTempW, nTempH, nTempXc, nTempYc);
// 恢复光标
EndWaitCursor();
// 更新视图
UpdateAllViews(NULL);
}
void CDipDoc::OnChannelSplit()
{
//获取应用程序类指针
CDipApp *pApp = GetApp();
//获取主框架窗口指针
CMainFrame *pFrame = GetMainFrame();
CDibObject *red = new CDibObject(m_pDibObject);
CDibObject *green = new CDibObject(m_pDibObject);
CDibObject *blue = new CDibObject(m_pDibObject);
//创建点处理CPointPro类对象
CPointPro PointOperation( m_pDibObject );
// 更改光标形状
BeginWaitCursor();
if (PointOperation.SplitChannels(red, green, blue))
{
POSITION posTemplate = pApp->GetFirstDocTemplatePosition();
CDocTemplate* pDocTemplate = pApp->GetNextDocTemplate(posTemplate);
CDipDoc* pDocument = (CDipDoc*) pDocTemplate->OpenDocumentFile(NULL);
pDocument->m_pDibObject = red;
pDocument->m_bImageLoaded = TRUE;
CString sSplitCaption;
AfxFormatString1(sSplitCaption, IDS_SPLIT_RED_CAPTION, GetTitle());
pDocument->SetTitle(sSplitCaption);
//获取子框架窗口指针
CChildFrame *pChild = (CChildFrame *) pFrame->MDIGetActive();
pChild->m_nWidth = m_pDibObject->GetWidth();
pChild->m_nHeight = m_pDibObject->GetHeight();
pChild->SetWindowPos( NULL, 0, 0, pChild->m_nWidth + 12,
pChild->m_nHeight + 38, SWP_NOZORDER | SWP_NOMOVE );
pDocument->UpdateAllViews(NULL);
pDocument = (CDipDoc*) pDocTemplate->OpenDocumentFile(NULL);
pDocument->m_pDibObject = green;
pDocument->m_bImageLoaded = TRUE;
AfxFormatString1(sSplitCaption, IDS_SPLIT_GREEN_CAPTION, GetTitle());
pDocument->SetTitle(sSplitCaption);
//获取子框架窗口指针
pChild = (CChildFrame *) pFrame->MDIGetActive();
pChild->m_nWidth = m_pDibObject->GetWidth();
pChild->m_nHeight = m_pDibObject->GetHeight();
pChild->SetWindowPos( NULL, 0, 0, pChild->m_nWidth + 12,
pChild->m_nHeight + 38, SWP_NOZORDER | SWP_NOMOVE );
pDocument->UpdateAllViews(NULL);
pDocument = (CDipDoc*) pDocTemplate->OpenDocumentFile(NULL);
pDocument->m_pDibObject = blue;
pDocument->m_bImageLoaded = TRUE;
AfxFormatString1(sSplitCaption, IDS_SPLIT_BLUE_CAPTION, GetTitle());
pDocument->SetTitle(sSplitCaption);
//获取子框架窗口指针
pChild = (CChildFrame *) pFrame->MDIGetActive();
pChild->m_nWidth = m_pDibObject->GetWidth();
pChild->m_nHeight = m_pDibObject->GetHeight();
pChild->SetWindowPos( NULL, 0, 0, pChild->m_nWidth + 12,
pChild->m_nHeight + 38, SWP_NOZORDER | SWP_NOMOVE );
pDocument->UpdateAllViews(NULL);
}
else
AfxMessageBox(IDS_FAIL_SPLIT);
// 恢复光标
EndWaitCursor();
}
void CDipDoc::OnChannelBlue()
{
//获取应用程序类指针
CDipApp *pApp = GetApp();
//获取主框架窗口指针
CMainFrame *pFrame = GetMainFrame();
CDibObject *blue = new CDibObject(m_pDibObject);
//创建点处理CPointPro类对象
CPointPro PointOperation( m_pDibObject );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -