Mfc 放大图像无法正常工作
在我的mfc对话框应用程序中,获取了从Cdialog派生的CimgDialog和从CScrollView派生的CimgView。使用StretchDIBits显示ImgBuf。如何使用CimgDialog::OnLButtonDown?放大?。任何有效的代码,示例代码?。使用我的缩放代码,它会缩放到错误的图像位置。我会在您的CImgView类中执行以下操作:Mfc 放大图像无法正常工作,mfc,Mfc,在我的mfc对话框应用程序中,获取了从Cdialog派生的CimgDialog和从CScrollView派生的CimgView。使用StretchDIBits显示ImgBuf。如何使用CimgDialog::OnLButtonDown?放大?。任何有效的代码,示例代码?。使用我的缩放代码,它会缩放到错误的图像位置。我会在您的CImgView类中执行以下操作: double ZoomFactor = 1.5; // set to required value CClientDC dc(this);
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的示例
以下文章也可能有所帮助:
CimgView
如何连接到从Cdialog派生的CimgDialog?请参见此。如果您使用的是从CScrollView
派生的视图类(根据codeguru链接),那么将CZoomView
(codeproject文章)中的代码合并到CImgView
类中应该是可行的——对不起,我没有进一步的建议