2013-07-16 121 views
0

在我的mfc對話框應用程序中,獲取從Cdialog派生的CimgDialog和從CScrollView派生的CimgView。使用StretchDIBits顯示ImgBuf.how以使用CimgDialog :: OnLButtonDown?進行放大。任何有效的代碼,示例代碼?使用我的縮放代碼,它會縮放圖像的錯誤位置。放大圖像無法正常工作

+0

顯示一些代碼,說明您認爲什麼行不通,什麼。 –

+0

看到打擊。補充評論。 – user2045525

回答

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的示例。

下面的文章也可以幫助:

+0

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

+0

在你想放大/縮小的地方 - 你還看看CodeProject文章嗎? –

+0

在上面的鏈接中嘗試了示例,縮放仍然無法正常工作。該對話框是基於cdialog的,而不是基於cview的,這有所作爲。我正在使用這個代碼,我試圖修復:http://stackoverflow.com/questions/16493519/how-to-zoom-in-and-out-on-cscrollview-surface – user2045525