2013-07-16 17 views
0

в моем приложении mfc dialog, получил CimgDialog, полученный из Cdialog и CimgView, полученных из CScrollView. Использование 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

Смежные вопросы