VC 数字图像处理实验(VC 单文档)(5)

2019-04-01 17:43

}

}

UpdateAllViews(NULL);

点击菜单“组建——组建”,再次组建整个程序,排除组建过程中出现的错误。

***此时运行程序,图像数据可以读入,但是无法显示图像。

第五节 实现图像显示

1. 定义显示控制变量

在DIPJQView.h文件中添加两个显示控制变量。 public: CDIPJQDoc* GetDocument(); int m_ShowMode; int m_ShowScale;

在DIPJQView.cpp文件中定义两个显示模式枚举常量,在构造函数中给显示控制参数赋初值。

enum {SHOWMODE_SCALE, SHOWMODE_FIT}; CDIPJQView::CDIPJQView() { // TODO: add construction code here m_ShowMode = SHOWMODE_FIT; m_ShowScale = 100; }

2. 图像显示代码

在CDIPJQView类的OnDraw()函数中添加图像显示代码。

void CDIPJQView::OnDraw(CDC* pDC) { CDIPJQDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CRect rect; if( m_ShowMode == SHOWMODE_FIT ) { GetClientRect(&rect); m_ShowScale = pDoc->m_pCurImage->FitBlt(pDC->m_hDC,0,0,rect.Width(), rect.Height(),0,0,pDoc->m_pCurImage->m_Width, pDoc->m_pCurImage->m_Height); } else { CSize size; size = GetTotalSize(); GetClientRect(&rect); int x0=0,y0=0; if( rect.Width()>size.cx ) x0 = (rect.Width()-size.cx)/2; if( rect.Height()>size.cy )

y0 = (rect.Height()-size.cy)/2; if( m_ShowScale==100 ) pDoc->m_pCurImage->BitBlt(pDC->m_hDC,x0,y0,pDoc->m_pCurImage->m_Width, pDoc->m_pCurImage->m_Height,0,0); else pDoc->m_pCurImage->StretchBlt(pDC->m_hDC,x0,y0,size.cx,size.cy, 0,0,pDoc->m_pCurImage->m_Width,pDoc->m_pCurImage->m_Height); } }

3. 图像区域设置代码

在CDIPJQView类的OnInitialUpdate()函数中添加视图滚动区域设置代码。

void CDIPJQView::OnInitialUpdate() { CScrollView::OnInitialUpdate(); CDIPJQDoc* pDoc = GetDocument(); CSize sizeTotal; // TODO: calculate the total size of this view if( pDoc->m_pCurImage->IsValid() ) { if( m_ShowMode==SHOWMODE_FIT ) { CRect rect; this->GetClientRect(&rect); sizeTotal.cx = rect.Width(); sizeTotal.cy = rect.Height(); } else { sizeTotal.cx = (int)(pDoc->m_pCurImage->m_Width*m_ShowScale/100.0+0.5); sizeTotal.cy = (int)(pDoc->m_pCurImage->m_Height*m_ShowScale/100.0+0.5); } // ((CMainFrame*)AfxGetApp()->m_pMainWnd)->ShowScale(m_ShowScale); } else { sizeTotal.cx = sizeTotal.cy = 100; }

}

SetScrollSizes(MM_TEXT, sizeTotal);

4. 修整程序菜单

切换到“ResourceView”选项页,展开“DIPJQ resources”,展开“Menu”,双击“IDR_MAINFRAME”,对菜单进行编辑。在各顶层菜单下保留如下菜单项,其余删除。

文件:打开,保存,另存为,最近文件,退出 编辑:撤消 查看:工具栏,状态栏 帮助:关于

5. 添加显示操作菜单

点击顶层菜单“查看”,双击下部空白菜单项,打开“菜单项目 属性”对话框,在ID下拉列表框中输入“ID_SHOW_ENLARGE”,在标明编辑框中输入“放大”,在提示编辑框中输入“放大显示图象\\n放大”。关闭对话框,将该菜单项拖至最上部。

继续依次建立如下三个菜单项:

ID ID_SHOW_REDUCE ID_SHOW_ORIGINAL ID_SHOW_FIT 标明 缩小 原始尺寸 适合窗口 提示 缩小显示图象\\n缩小 按原始尺寸显示图象\\n原始尺寸 使图象完整显示在窗口中\\n适合窗口

点击顶层菜单“查看”,双击下部空白菜单项,在“菜单项目 属性”对话框中,选中“分隔符”,关闭对话框,将分隔符拖至“工具栏”菜单项之上,“适合窗口”之下。

6. 编辑工具栏

切换到“ResourceView”选项页,展开“DIPJQ resources”,展开“Toolbar”,双击“IDR_MAINFRAME”,对工具栏进行编辑。

保留打开、保存、关于三个按钮,删除其它按钮。

添加“撤消”按钮:点中最后的空白按钮,绘制撤消图形,双击该按钮,将ID设为“ID_EDIT_UNDO”,将按钮拖至保存按钮之后。

再依次添加如下四个按钮:

放大——ID_SHOW_ENLARGE 缩小——ID_SHOW_REDUCE

原始尺寸——ID_SHOW_ORIGINAL 适合屏幕——ID_SHOW_FIT 工具栏中个按钮的形状如下:


VC 数字图像处理实验(VC 单文档)(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:牛津初中英语8B - Unit6 - A - charity - walk学习案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: