完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
那每次动滚轮时,需要根据你鼠标的坐标,以及放大/缩小的比例来计算出图片的位置坐标,然后重新赋予图片,这样应该就可以实现位置不变了。
|
|
1 条评论
|
|
Image ZoomSingle属性 lastmouse position给到image center position
|
|
|
|
您好,要实现像CAD一样的滚轮缩放,需要在代码中进行以下操作:
1. 获取鼠标滚轮的滚动方向和缩放倍数 在`QGraphicsView`中,可以通过重写`wheelEvent`方法获取鼠标滚轮的滚动方向和缩放倍数: ```cpp void GraphicsView::wheelEvent(QWheelEvent *event) { int delta = event->angleDelta().y(); double scaleFactor = 1.15; if (delta > 0) { // 滚轮向上,缩小 scale(1/scaleFactor, 1/scaleFactor); } else { // 滚轮向下,放大 scale(scaleFactor, scaleFactor); } event->accept(); } ``` 这里`scaleFactor`是缩放倍数,可以根据需要自行调整。 2. 让鼠标所在的点保持不变 默认情况下,`QGraphicsView`会以视图中心点为缩放基准点。为了实现像CAD一样的效果,需要让鼠标所在的点保持不变。 可以通过以下步骤实现: - 将鼠标所在点的坐标转换为场景坐标系 - 获取当前视图是以哪个点为中心点进行缩放的 - 计算出缩放后中心点的偏移量 - 将偏移量加回去,让鼠标所在点保持不变 代码如下: ```cpp void GraphicsView::wheelEvent(QWheelEvent *event) { // 获取鼠标所在点的场景坐标 QPointF scenePos = mapToScene(event->pos()); // 获取当前视图是以哪个点为中心点进行缩放的 QPointF oldCenter = mapToScene(viewport()->rect().center()); QPointF newCenter = oldCenter; // 计算出缩放后中心点的偏移量 int delta = event->angleDelta().y(); double scaleFactor = 1.15; if (delta > 0) { newCenter = (scenePos - oldCenter) * (1/scaleFactor) + oldCenter; scale(1/scaleFactor, 1/scaleFactor); } else { newCenter = (scenePos - oldCenter) * scaleFactor + oldCenter; scale(scaleFactor, scaleFactor); } // 将偏移量加回去,让鼠标所在点保持不变 QPointF deltaPos = scenePos - newCenter; horizontalScrollBar()->setValue(horizontalScrollBar()->value() + deltaPos.x()); verticalScrollBar()->setValue(verticalScrollBar()->value() + deltaPos.y()); event->accept(); } ``` 附件中的示例程序已经实现了以上功能,可以参考一下。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
打开labview时很慢,在任务管理器里面看到,内存能有1000多M,重装也没用,各位大佬这是什么问题引起的,怎么解决
1780 浏览 3 评论
2121 浏览 2 评论
Labview生成的exe程序,源程序找不到了,有什么办法可以对exe程序的界面和菜单等进行调整和编辑
3405 浏览 1 评论
想通过labview实现这个二维数组转成一维数组的功能,但是不知道怎么搞?新手求图(苍蝇戳手)
2950 浏览 4 评论
关于DAQExpress软件中电压的最大值最小值是根据什么来确定的?
2738 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-22 03:33 , Processed in 1.257031 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号