在我的 mfc 对话框应用程序中,得到了从 Cdialog 派生的 CimgDialog 和从 CScrollView 派生的 CimgView。使用 StretchDIBits 来显示 ImgBuf。如何使用 CimgDialog::OnLButtonDown 进行放大?任何有效的代码,示例代码?使用我的缩放代码,它会缩放到错误的图像位置。
问问题
372 次
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 回答