放大图像无法正常工作

时间:2013-07-16 03:22:10

标签: mfc

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

1 个答案:

答案 0 :(得分:0)

我会在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()有一些限制 - 请参阅MSDN Article

如果您使用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);

MSDN article给出了如何在打印时设置DC的示例。

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