怎样实现以鼠标为中心的缩放?

yjukh 2009-12-17 02:37:43
要做一个图形的软件,怎样做到像AutoCAD那样,鼠标放到哪儿就以那个点为中心的放大。

我已经研究了几天CZoomView的例子,并尝试着修改,但一直没有成功,滚动条的计算始终不对。
哪位有比较好的例子或方法?
谢谢!
...全文
938 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hu15994261234 2010-09-28
  • 打赏
  • 举报
回复
我艹,函数都不给一个,搞毛。。。
PageLee 2009-12-22
  • 打赏
  • 举报
回复
直接用CView,既然用鼠标放大、缩小、漫游,就不用CScrollView,因为视图的可见部分就那么多,然后得到鼠标按下点的位置P1和放开的位置P2,以按下位置P1为中心,P1和P2的距离乘以一个值为放大倍数,重新组织视图的显示。
daredjever 2009-12-22
  • 打赏
  • 举报
回复
这个问题在我建立坐标系的时候做过类似的工作
首先你的图形的放大缩小肯定也有拖动吧?
就是移动你的图片
然后你先实现以屏幕或者你的图片中心为中心点旋转。既然你问怎么以鼠标点为中心旋转,我就默认你能以屏幕中心点为中心旋转了。
然后计算你鼠标当前的坐标与屏幕中心的距离,用这个距离移动图片,使你的鼠标的点移动到屏幕中心,再进行放大缩小计算。
最后再把你的鼠标移动到原来的位置。
不知道这么说你明白了不、
寒韩Glory 2009-12-18
  • 打赏
  • 举报
回复
就是个坐标转换,想清楚了很简单,以前做过,一个经验提供给你,显示视不要从CScrollView派生,那个滚动条不好控制的,要从CView派生,然后自己控制滚动条。
tiantangxingkong 2009-12-17
  • 打赏
  • 举报
回复
就是相应的计算缩放后和缩放前鼠标所在的相对位置的差异,然后将缩放后界面调整到合适的位置,重置滚动条的位置.
想法估计就是这么个想法.
yjukh 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 laviewpbt 的回复:]
这个问题我知道,先看看CSDN里的大神会给出什么样的答案在说。
[/Quote]
老大,不要吊胃口好不好~
laviewpbt 2009-12-17
  • 打赏
  • 举报
回复
这个问题我知道,先看看CSDN里的大神会给出什么样的答案在说。
用户 昵称 2009-12-17
  • 打赏
  • 举报
回复
在纸上画画,既然以鼠标为中心,首先得计算出鼠标相对于图形的位置,然后将图形缩放,再计算出鼠标相对于图形的新位置,新旧位置必然有差异,弥补这差异就差不多了。
fandh 2009-12-17
  • 打赏
  • 举报
回复
这基本上是你放大缩小的算法不准!滚动条只要getscrollpos就能得到!

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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