再发一遍 MFC打印预览的缩放是如何实现的?

期盼曙光 2012-10-23 03:49:26
没人理我,再发一遍
CPreviewView继承自cscrollView,它的缩放是采用了MM_ANISOTROPIC模式下的视图缩放呢?还是定义的比例因子,使画在视图上的内容(图形,字体)都乘以缩放因子呢?

原帖:http://topic.csdn.net/u/20121022/17/b2a2234e-fe2b-498b-abdb-3a3523ce6097.html
...全文
295 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dfjy 2013-11-21
  • 打赏
  • 举报
回复
用StrechBitBlt()
schlafenhamster 2012-10-25
  • 打赏
  • 举报
回复
CPreviewView中画那个页面框时,是在 MM_TEXT 下进行的。
使用了 SaveDC 和RestoreDC。
期盼曙光 2012-10-24
  • 打赏
  • 举报
回复
使用MM_ANISOTROPIC模式对cscrollview进行缩放,如下代码:
void CTestZoomView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: Add your specialized code here and/or call the base class
CScrollView::OnPrepareDC(pDC, pInfo);
pDC->SetMapMode (MM_LOMETRIC) ;
CSize size ;
size = pDC ->GetViewportExt() ;
pDC->SetMapMode (MM_ANISOTROPIC) ;
pDC->SetViewportExt(size.cx*m_zoomScale,size.cy*m_zoomScale);

}
void CTestZoomView::OnDraw(CDC* pDC/**/)
{
CTestZoomDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
pDC ->SelectObject(m_titleFont);
pDC->Rectangle(100,-100,2200,-3070);
CRect rect(110,-110,2100,-1000);
pDC->DrawText(_T("The second step included the capability dimension, the performance dimension "), -1,rect, DT_LEFT | DT_WORDBREAK | DT_NOPREFIX | DT_VCENTER | DT_EXTERNALLEADING);
}

缩放时整个视图都在放大,但我想让Rectangle距离客户区顶部的距离保持不变,不随着放大而使这个距离也放大,该怎样处理左上角坐标
schlafenhamster 2012-10-23
  • 打赏
  • 举报
回复
个矩形框缩放前有十行文本,字也是要缩放的!
期盼曙光 2012-10-23
  • 打赏
  • 举报
回复
我的做法是定义了一个m_zoomscale,然后让输出的元素都乘以这个比例,比如说矩形的长宽,字体的高度等都乘以这个缩放比例,但是会出现一个问题,就是比如说我这个矩形框缩放前有十行文本,但缩放后会增加或者会变少,我希望它能够保持不变
schlafenhamster 2012-10-23
  • 打赏
  • 举报
回复
漫漫看吧
期盼曙光 2012-10-23
  • 打赏
  • 举报
回复
CSize* pSize = &m_pPageInfo[nPage].sizeUnscaled;
CSize* pRatio = &m_pPageInfo[nPage].sizeScaleRatio;
CSize* pZoomOutRatio = &m_pPageInfo[nPage].sizeZoomOutRatio;
CSize windowSize = CalcPageDisplaySize();
不懂他这些值都是什么
schlafenhamster 2012-10-23
  • 打赏
  • 举报
回复
看看CPreviewView 的 DoZoom

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧