在我的mfc对话框应用程序中,得到了CimgDialog派生自Cdialog和CimgView派生自CScrollView.using StretchDIBits显示ImgBuf.how使用CimgDialog :: OnLButtonDown?放大。任何有效的代码,示例代码?使用我的缩放代码,它会缩放到错误的图像位置。
答案 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的示例。
以下文章也可能有所帮助: