admin管理员组文章数量:1536472
2024年6月12日发(作者:)
鼠标滚轮实现单文档视图的放大与缩小
其主要原理是利用SetWindowExt和SetViewportExt函数来动态调节窗口区和视口
区的比例,设窗口区与视口区之间的比例系数为m_delta,鼠标滚轮每滚动一次,在视图
View类的响应函数OnPrepareDC中就改变一次m_delta,然后调用OnPaint函数重新
绘图,这样看起来就实现了视图的放大与缩小。
其主要步骤如下:
1. 建立单文档视图工程,比如;
2. 在CSingleDocView类中添加float型成员变量m_delta,在该类构造函数中初始
化m_delta = 1.0,m_delta即为比例系数,初始化其为1表示窗口与视口大小相同;
3. 向CSingleDocView类中添加消息响应函数OnPrepareDC,向其中添加如下代码:
[cpp] view plaincopy
1. // TODO: 在此添加专用代码和/或调用基类
2. CView::OnPrepareDC(pDC, pInfo);
3. CRect rectClient;
4. GetClientRect(rectClient); // 得到客户区大小
5. pDC->SetMapMode(MM_ANISOTROPIC); // 设置绘图模式
6. pDC->SetWindowExt(*m_delta,*m_delta);
// 设置整个客户区的大小,窗口大小
7. pDC->SetViewportExt(,); // 视口
大
[cpp] view plaincopy
1.
pDC->SetViewportOrg(0,0);// 设置视口原点
4. OnPaint函数中的代码如下:
[html] view plaincopy
1. CPaintDC dc(this); // device context for p
ainting
2. // TODO: 在此处添加消息处理程序代码
3. // 不为绘图消息调用 CView::OnPaint()
4. OnPrepareDC(&dc);
版权声明:本文标题:鼠标滚轮实现单文档视图的放大与缩小 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1718200182a652880.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论