完善资料让更多小伙伴认识你,还能领取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(); } ``` 附件中的示例程序已经实现了以上功能,可以参考一下。 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
211 浏览 0 评论
请教大神,在labview里面对实时扫描资源中的C系列模块NI9234进行配置发生非预期错误
1709 浏览 0 评论
1585 浏览 0 评论
LABVIEW 2023 Q1调用python后一直报错1671
1960 浏览 2 评论
5207 浏览 3 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 03:05 , Processed in 0.550139 second(s), Total 54, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4460