Mfc 放大图像无法正常工作

Mfc 放大图像无法正常工作,mfc,Mfc,在我的mfc对话框应用程序中,获取了从Cdialog派生的CimgDialog和从CScrollView派生的CimgView。使用StretchDIBits显示ImgBuf。如何使用CimgDialog::OnLButtonDown?放大?。任何有效的代码,示例代码?。使用我的缩放代码,它会缩放到错误的图像位置。我会在您的CImgView类中执行以下操作: double ZoomFactor = 1.5; // set to required value CClientDC dc(this);

在我的mfc对话框应用程序中,获取了从Cdialog派生的CimgDialog和从CScrollView派生的CimgView。使用StretchDIBits显示ImgBuf。如何使用CimgDialog::OnLButtonDown?放大?。任何有效的代码,示例代码?。使用我的缩放代码,它会缩放到错误的图像位置。

我会在您的CImgView类中执行以下操作:

double ZoomFactor = 1.5; // set to required value
CClientDC dc(this);
CSize sz = dc.GetViewportExt();
sz.x = (LONG) ((double) sz.x * ZoomFactor);
sz.y = (LONG) ((double) sz.y * ZoomFactor);
dc.SetViewportExt(sz);
SetViewportExt()
有一些限制——请参阅

如果使用
DC
(如页面大小等)进行计算,最好在自己的成员变量(如
CSize m_totalDev
)中保留范围,当需要在
CImgView::OnPrepareDC()
中缩放和设置视口范围时更改此值,如

if (pDC->IsPrinting())
    // set up ViewPortExt depending on printer page size, fit-to-page, etc
else
    pDC->SetViewportExt(m_totalDev);
这是一个如何在打印时设置DC的示例

以下文章也可能有所帮助:


展示一些代码,并解释哪些不起作用以及您的期望。请参阅。添加了注释。在您想要放大/缩小的地方--您是否也看过CodeProject文章?尝试了上面链接中的示例,缩放仍然不起作用。对话框是基于cdialog的,而不是基于cview的,这会有所不同。我正在使用我试图修复的代码:在您的问题中,您说CimgView派生自CsRollView,
CimgView
如何连接到从Cdialog派生的CimgDialog?请参见此。如果您使用的是从
CScrollView
派生的视图类(根据codeguru链接),那么将
CZoomView
(codeproject文章)中的代码合并到
CImgView
类中应该是可行的——对不起,我没有进一步的建议