放大图像无法正常工作
在我的mfc对话框应用程序中,获取从Cdialog派生的CimgDialog和从CScrollView派生的CimgView。使用StretchDIBits显示ImgBuf.how以使用CimgDialog :: OnLButtonDown?进行放大。任何有效的代码,示例代码?使用我的缩放代码,它会缩放图像的错误位置。放大图像无法正常工作
我会做这样的事情在你的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的示例。
下面的文章也可以帮助:
CImgView的哪一部分添加上面的代码? – user2045525
在你想放大/缩小的地方 - 你还看看CodeProject文章吗? –
在上面的链接中尝试了示例,缩放仍然无法正常工作。该对话框是基于cdialog的,而不是基于cview的,这有所作为。我正在使用这个代码,我试图修复:http://*.com/questions/16493519/how-to-zoom-in-and-out-on-cscrollview-surface – user2045525
显示一些代码,说明您认为什么行不通,什么。 –
看到打击。补充评论。 – user2045525