0

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

4

1 回答 1

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 文章

如果您正在使用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 文章提供了如何在打印时设置 DC 的示例。

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

于 2013-07-16T06:57:45.220 回答