1
完善资料让更多小伙伴认识你,还能领取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(); } ``` 附件中的示例程序已经实现了以上功能,可以参考一下。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
412 浏览 1 评论
NI Vision有个图片打不开其他图都能打开(用NI Vision Assistant也打开不了)
879 浏览 1 评论
labview2015使用Excel报表程序打包生成后打开程序要选一个vi才能使用,否则软件就会报错,这是什么问题?
1463 浏览 2 评论
LabVIEW与单片机无法串口通信 提示串口打开错误 端口设置有问题吗?
1396 浏览 3 评论
1677 浏览 2 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 14:02 , Processed in 0.592145 second(s), Total 90, Slave 69 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号