最后将CBmpScaleView中的OnDraw函数改写成如下代码:
void CBmpScaleView::OnDraw(CDC* pDC)
{
CBmpScaleDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int width,height;
width=pDoc->m_Bmp.m_Width*pDoc->m_scale; //图像显示宽度
height=pDoc->m_Bmp.m_Height*pDoc->m_scale;//图像显示高度
CSize sizeTotal(width,height);
SetScrollSizes(MM_TEXT, sizeTotal); //设置滚动窗大小
GetParentFrame()->RecalcLayout(TRUE);
ResizeParentToFit();
if (m_gdi_draw==true)
pDoc->m_Bmp.Draw(pDC);
else
pDoc->m_Bmp.Draw(pDC,false,0,0,width,height);
m_strImgsize.Format("图像分辨率:%d×%d, 当前显示比例:%d", pDoc->m_Bmp.m_Width, pDoc->m_Bmp.m_Height, int(pDoc->m_scale*100));
CString strTitle=m_title+m_strImgsize;
pDoc->SetTitle(strTitle); //设置文档标题
}
5.4 控制位图显示方式
为菜单资源“IDR_BMPSCATYPE”下面的“查看”增加一个名为“GDI方式显示”的菜单项,ID名为ID_VIEW_GDI。在CBmpScaleView中,为ID_VIEW_GDI映射消息函数OnViewGdi和OnUpdateViewGdi, 对应代码如下:
void CBmpScaleView::OnUpdateViewGdi(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck(m_gdi_draw); //如果m_gdi_draw=true,菜单左边将出现一个勾,表示当前使用缩放函数显示
|