放大图像无法正常工作

问题描述:

在我的mfc对话框应用程序中,获取从Cdialog派生的CimgDialog和从CScrollView派生的CimgView。使用StretchDIBits显示ImgBuf.how以使用CimgDialog :: OnLButtonDown?进行放大。任何有效的代码,示例代码?使用我的缩放代码,它会缩放图像的错误位置。放大图像无法正常工作

+0

显示一些代码,说明您认为什么行不通,什么。 –

+0

看到打击。补充评论。 – user2045525

我会做这样的事情在你的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的示例。

下面的文章也可以帮助:

+0

CImgView的哪一部分添加上面的代码? – user2045525

+0

在你想放大/缩小的地方 - 你还看看CodeProject文章吗? –

+0

在上面的链接中尝试了示例,缩放仍然无法正常工作。该对话框是基于cdialog的,而不是基于cview的,这有所作为。我正在使用这个代码,我试图修复:http://*.com/questions/16493519/how-to-zoom-in-and-out-on-cscrollview-surface – user2045525