完善资料让更多小伙伴认识你,还能领取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(); } ``` 附件中的示例程序已经实现了以上功能,可以参考一下。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求助,做一个波形图显示控件,要求调用excel表里面存的时间作为波形图的x值。
2092 浏览 3 评论
1225 浏览 0 评论
keithley 2600系列labiew vi中配置测量功能中的node in 和node out具体功能是什么?
1684 浏览 1 评论
labview求助:想写一个labview输出不重复随机数的程序,有没有大佬帮忙看看这个假分支要怎么写?
3640 浏览 5 评论
部署计算机上运行 LabVIEW 应用程序时出现以下错误: “缺少外部函数 dll...”解决办法
1082 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-5-30 03:46 , Processed in 0.708315 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191