首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在pyqt5中使用鼠标滚轮在QGraphicsScene上缩放图像

,可以通过以下步骤实现:

  1. 导入必要的模块和类:
代码语言:txt
复制
from PyQt5.QtWidgets import QGraphicsView, QGraphicsScene
from PyQt5.QtCore import Qt
  1. 创建一个自定义的GraphicsView类,并重写其wheelEvent方法:
代码语言:txt
复制
class CustomGraphicsView(QGraphicsView):
    def wheelEvent(self, event):
        # 获取滚轮滚动的角度
        angle = event.angleDelta().y() / 8

        # 计算缩放因子
        scaleFactor = 1.15 ** (angle / 120)

        # 获取当前的缩放因子
        currentScale = self.transform().m11()

        # 设置缩放的中心点为鼠标所在位置
        self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse)

        # 进行缩放
        self.scale(scaleFactor, scaleFactor)
  1. 创建一个QGraphicsScene对象,并将其设置为GraphicsView的场景:
代码语言:txt
复制
scene = QGraphicsScene()
view = CustomGraphicsView(scene)
  1. 在场景中添加图像:
代码语言:txt
复制
image = QGraphicsPixmapItem(QPixmap("image.jpg"))
scene.addItem(image)
  1. 显示GraphicsView:
代码语言:txt
复制
view.show()

通过以上步骤,我们可以在pyqt5中使用鼠标滚轮在QGraphicsScene上缩放图像。当鼠标滚轮滚动时,会根据滚动的角度计算缩放因子,并以鼠标所在位置为中心进行缩放操作。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云对象存储(COS)。

  • 腾讯云云服务器(CVM):提供弹性计算能力,可根据业务需求灵活选择配置,支持多种操作系统和应用场景。产品介绍链接:腾讯云云服务器
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务,适用于图片、音视频、文档等各类数据的存储和管理。产品介绍链接:腾讯云对象存储
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布绘制的背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

一、鼠标滚轮缩放的中心点设置为当前鼠标中心点 - 要点分析 ---- 鼠标指针指向界面的 Canvas 画布某个位置 , Canvas 画布绘制着一张超大图片 , 以该位置为中心 , 滑动鼠标滚轮时进行缩放...; 使用鼠标滚轮缩放后 , Canvas 绘制的图片的尺寸肯定是放大或者缩小了 , 尺寸发生了改变 ; 图片缩放时 , 鼠标指针指向一个位置 , 该位置对应着一个当前 Canvas 画布的 x..., 保存当前的鼠标位置及比例 ; 鼠标滚轮事件 MouseWheelEvent , 可以直接通过调用 e.getX(), e.getY() 获取到当前 鼠标指针 Canvas 画布的坐标 ;...double imageHeight = image.getHeight(null) * scale; // 缩放后的图像高度 有了鼠标指针图片中的位置 , 图片的尺寸 , 就可以计算出鼠标指针图片中的比例...鼠标滚轮缩放完成后 , 再根据鼠标指针指向的位置和比例 , 结合图片缩放后的尺寸 , 重新计算画布偏移的位置 , 以达到鼠标指向的图片元素位置基本保持不变的目的 ; /** * 计算新的比例

2.7K10

React 缩放、裁剪和缩放图像

本文中,我们将了解如何使用 Cropper.js React Web 应用裁剪图像。尽管我们不会将这些图像上传到远程服务器进行存储,但是很容易就能完成这个任务。...React应用的Cropper.js 如你所见,有一个带有源图像的交互式 canvas。操作的结果显示“预览”框,如果需要,可以将其保存。实际,我们会将结果发送到远程服务器,但这取决于你。...命令行,执行以下操作: npx create-react-app image-crop-example 上面的命令将使用默认模板创建一个新项目。... constructor 方法,我们定义了状态变量,该变量表示最终更改的图像。因为 Cropper.js 需要与 HTML 组件交互,所以需要定义一个引用变量来包含它。...源图像填充使用了该特定组件的用户定义的属性。目标图片使用的状态变量是我们安装组件后定义的。

6.2K40

【Java AWT 图形界面编程】使用小键盘按键缩放 Canvas 画布绘制的背景图像 ( 键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

+ 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 ---- 【Java AWT 图形界面编程】Canvas 绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame...窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客 , 绘制了超大图像 , 可以使用鼠标拖动 ; 【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas...画布 ( 鼠标滚轮事件监听器 MouseWheelListener ) 博客 , 新增鼠标滚轮缩放画布示例 , 但是使用鼠标拖动时 , 拖动的效果也随之缩放, 如 缩小画布后 , 移动鼠标 , 移动距离对应的缩放效果也随之缩小...; 【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布绘制的背景图像 ( 鼠标滚轮事件监听器 MouseWheelListener | Canvas 绘制图像并设置图像大小...) 博客 , 使用缩放背景图像的方式 , 实现缩放效果 , 并同时福袋鼠标指针拖拽效果 ; 本博客实现的案例 , 在上面的基础 , 添加了鼠标滚轮缩放的中心点设置为当前鼠标中心点 ; 1、代码示例

1.8K20

Swift创建可缩放图像视图

也许他们想放大、平移、掌握这些图像本教程,我们将建立一个可缩放、可平移的图像视图来实现这一功能。 计划 他们说,一张图片胜过千言万语--但它不一定要花上一千行代码!...基本,我们将在UIScrollView嵌套一个包含图片的UIImageView,它将处理所有我们扔给它的缩放、平移(和点击!)手势。...medium.com/media/afad3… commonInit(),我们将图像视图居中,并设置它的高度和宽度,而不是把它固定在父视图上。这样一来,滚动视图就会从图像视图中获得其内容大小。...设置滚动视图 我们需要实际设置我们的滚动视图,使其可缩放和可平移。这包括设置最小和最大的缩放级别,以及指定用户放大时使用的UIView(我们的例子,它将是图像视图)。...试试平移和缩放(如果你使用的是模拟器,按住 "option "键)--你会对你的图像有一个全新的视角 以编程方式初始化视图 使用界面生成器时,这很好--但如果你想以编程方式初始化视图呢?

5.6K20

QT实现机器视觉最常用的图像查看器(源码)

机器视觉行业中最常见的控件就是图像查看器了,使用QT实现其实也非常简单,我出的项目【降龙:算法软件框架】和【重明:工业相机二次开发】中都有用到。...2、QT视图模型介绍 我们常规认知里,例如显示一张图像,那只需要一个QWidget(也可以说是画布),然后我们将图像显示QWidget(也可以说画在画布),就完成了,只需要两个对象,一个图像,一个...Graphics Item:场景可以被显示的元素,可以是我们的图像,也可以是矩形圆形等任何东西。...50倍 { return; } // 正值表示滚轮远离使用者,为放大;负值表示朝向使用者,为缩小 scrollAmount.y() > 0 ?...onZoom(1.1) : onZoom(0.9); } //视觉窗口上双击鼠标左键,会有图像居中效果,主要依赖于onCenter()方法。

21510

pyqt5展示pyecharts生成的图像

技术背景 虽然现在很少有人用python去做一些图形化的界面,但是不得不说我们日常大部分的软件使用中都还是有可视化与交互这样的需求的。...这里我们主要探索一下pyqt5制作出来的界面中集成一个pyecharts生成的页面,效果图如下所示: 环境依赖 这里主要依赖于pyecharts和pyqt5这两个库,但是由于pyqt55.10.1...pyecharts配置散点图的参数时,主要方法是调用Scatter的函数来进行构造,比如我们常用的一些窗口工具,区域缩放等功能,就可以Scatter添加一个toolbox来实现: toolbox_opts...最后通过pyqt的图层中导入网页,实现图像的展示效果: self.mainhboxLayout = QHBoxLayout(self) self.frame = QFrame(self) self.mainhboxLayout.addWidget...选取一部分之后的展示效果如下图所示: 总结概要 本文通过一个实际的散点图案例,展示了如何使用pyqt5嵌套一个pyecharts图层的方法,通过这个技巧,可以pyqt5的框架也实现精美的数据可视化的功能模块

2K20

鼠标右键加入使用notepad++编辑

个人博客:https://suveng.github.io/blog/​​​​​​​ 鼠标右键加入使用notepad++编辑 阅读原文 我们安装完notepad++文本编辑器之后,一个文本文件右键有时候并没有出现...“使用notepad++编辑的选项”,我们可以通过简单地修改注册表文件来增加这样的功能: 1、 首先打开注册表,windows+ R运行,在运行窗口中输入regedit,进入注册表编辑器 2、左边的导航中找到路径...:HKEY_CLASSES_ROOT*\shell 3、 shell右键,新建项,命名为editwith notepad++ 4、 新建的项editwith notepad++右键,然后新建一个项...command,新建了command之后选中command项会发现右边有相应的值,双击默认进行修改 5、 双击默认后对其值进行修改,先写notepad++的路径,然后写上“%1”,点击确定,在任意文件右键都会有

1.1K10

【QT】图形视图、动画框架

() //为图形项设置焦点 QGraphicsScene::focusItem() //获取当前获得焦点的图形项 QGraphicsScene::render() //将场景的一部分渲染到绘图设备...图形项支持如下功能: 鼠标按下、移动、释放、双击、悬停、滚轮和右键菜单事件 键盘输入焦点和键盘事件 拖放事件 分组,使用QGraphicsItemGroup通过parent-child关系来实现。...如果没有图像项,则为顶层图像项,其均会在场景的坐标系统。 所有的图像项都会使用确定的顺序来进行绘制,这个顺序也决定了单机场景时哪个图像项会先获得鼠标的输入。...一个图像项可以接收悬停事件,当鼠标进入它的区域之中时,它就会收到一个QGraphicsSceneHoverEnter事件,鼠标图像项的区域移动时,QGraphicsScene就会向该图像项发送GraphicsSceneHoverLeave...该框架是通过控制Qt的属性来实现动画的,可以应用在窗口的部件和其他QOBject对象,也可以应用在图像视图框架

1.4K30

Linux 使用 gImageReader 从图像和 PDF 中提取文本

,OCR(光学字符识别)引擎可以让你从图片或文件(PDF)扫描文本。默认情况下,它可以检测几种语言,还支持通过 Unicode 字符扫描。...因此,gImageReader 就来解决这点,它可以让任何用户使用它从图像和文件中提取文本。 让我重点介绍一些有关它的内容,同时说下我测试期间的使用经验。...将提取的文本导出为 .txt 文件 跨平台(Windows) Linux 安装 gImageReader 注意:你需要安装 Tesseract 语言包,才能从软件管理器图像/文件中进行检测。...gImageReader 使用经验 当你需要从图像中提取文本时,gImageReader 是一个相当有用的工具。当你尝试从 PDF 文件中提取文本时,它的效果非常好。...也许当你进行扫描时,从文件识别字符可能会更好。 所以,你需要亲自尝试一下,看看它是否对你而言工作良好。我 Linux Mint 20.1(基于 Ubuntu 20.04)试过。

2.9K30

【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布 ( 鼠标滚轮事件监听器 MouseWheelListener )

文章目录 一、使用鼠标滚轮放大缩小 Canvas 画布 - 要点分析 1、鼠标滚轮事件 2、核心代码示例 二、绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放示例 1、代码示例 2、效果展示 一、使用鼠标滚轮放大缩小...Canvas 画布 - 要点分析 ---- 1、鼠标滚轮事件 设置一个缩放比例 scale , 默认为 1.0 ; private double scale = 1.0; // 缩放比例,默认为...1.0 设置鼠标滚轮监听 , Canvas 组件 , 调用 addMouseWheelListener 函数 , 添加 鼠标滚轮监听器 MouseWheelListener , 实现该监听器的...// 绘制图形 } } 二、绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放示例 ---- 【Java AWT 图形界面编程】Canvas 绘制超大图片 ( 使用鼠标拖动查看全图...| 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客 , 绘制了超大图像 , 可以使用鼠标拖动 , 这里在上述基础 , 新增鼠标滚轮缩放示例 ;

2.2K30

Qt Designer基本控件介绍——Display Widgets(显示小部件)

,希望新窗口打开这个超链接时,setOpenExternalLinks特性必须设置为True,即setOpenExternalLinks(True) linkHovered:当鼠标指针滑过标签嵌入的超链接时...,需要用槽函数与这个信号进行绑定 详细使用示例可参考博客“PyQt5基本控件详解之QLabel(三)” Text Browser : 文本浏览框 使用html就可以向Qtextbrowser里插入图片,...setCacheMode(): 设置缓存模式,这个属性控制视图的哪一部分存储缓存,QGraphicsView可以预存一些内容QPixmap,然后被绘制到视口上,这样做的目的是加速整体区域重绘的速度...默认情况是变换时保持视图的中心点不变。 scale(): 缩放当前的视图。 rotate(): 顺时针旋转当前视图。 translate(): 平移当前的视图。...和Qt的应用显示图形(包括2D和3D图形),Designer,该部件没有任何独有属性,都是继承的QWidget的属性。

7.7K20

节约时间,珍惜生命,手写一个验证码图片标注程序

做验证码图片的识别,不论是使用传统的ORC技术,还是使用统计机器学习或者是使用深度学习神经网络,都少不了从网络采集大量相关的验证码图片做数据集样本来进行训练。...大量的时间浪费了重复地进行鼠标右键重命名操作了。于是,使用Qt的Python封装包——PyQt5,编写了一个小工具,方便进行验证码图片的数据标注,节省时间,珍惜生命。 程序的运行如下动图所示: ?...]) 然后,借助QImage()类实例化一个Qt的图像图像占位标签通过setPixmap设置显示图像。...最终,我们实现的效果是,按住Ctrl+鼠标滚轮滚轮向上,图片放大,滚轮向下,图片缩小。...这是通过重写鼠标滚轮事件来实现的: # 重写鼠标滚轮事件def wheelEvent(self, event): # 如果按住了Ctrl if event.modifiers() == QtCore.Qt.ControlModifier

1.7K20

OpenCV基础 | 3.numpy图像处理的基本使用

作者:小郭学数据 源自:快学python 学习视频可参见python+opencv3.3视频教学 基础入门 今天写的是numpy图像处理的基本使用 1.获取图片高宽通道及图像反转 # 获取图片高宽通道及图像反转...函数执行前后滴答数之差与滴答频率之比为前后时间差 print("time: %s ms" % (time * 1000)) 默认输出时间为秒(s) 输出: time: 2870.7665066666664 ms 笔者使用的是...i5处理器 调用opencv的API实现图像反转 #调用opencv的API实现图像反转 def inverse(image): dst = cv.bitwise_not(image) # 按位取反...,白变黑,黑变白 cv.imshow("inverse_demo", dst) 所用时间 time: 100.06570666666667 ms 能调用API的尽量使用API接口,提升效率...2.制作图像 单通道和三通道图像制作代码如下: def create_image(): #单通道 img1=np.ones([400,400,1],np.uint8) img1=

1.6K10

9.5 QGraphicsView视图框架

9.5 QGraphicsView视图框架 Qt Graphics View 用于管理交互大量定制的 2D 图形对象,提供了可视化显示对象的视图 widget,并支持缩放和旋转功能。...Graphics View 使用 BSP(二元空间划分)树形,可非常快速地找到图元对象,因此即使是包含百万个图元对象的大型场景,也能实时显示。...Graphics View框架包含了一个事件传播构架,允许与场景的图元进行交互。比如:可以处理键盘事件,鼠标移动、松开、双击事件,并且可以跟踪鼠标移动。...其中,场景类(QGraphicsScene)是用于管理大量图元对象的容器,视图类(QGraphicsView)是用于显示场景的图元对象。...它们三者之间的关系:场景类相当于一张画布,图元类(QGraphicsItem)相当于画笔,画布绘制了各种图形后,需要将画布挂到墙壁上展示,视图类就相当于用于展示画布的这一堵墙。

47710

全志H618用OpenCV读取图像显示到PyQt5窗口上

OpenCV能够处理图像、视频、深度图像等各种类型的视觉数据,某些情况下,尽管OpenCV可以显示窗口,但PyQt5可能更适合用于创建复杂的交互式应用程序,而自带GPU的H618就成为了这些图像显示的最佳载体...这里分享一个代码,功能是使用图像处理库opencv从摄像头获取数据,缩放后从pyqt5的窗口中显示出来。...用Qt Designer画个窗口 这里我电脑使用designer软件,创建一个Main Window类型窗体。从左边组件栏拖出一个label放到窗口中间。...这里我是设置了QFrame启用了边框,QLabel的texte属性控制显示的文本,QLabel的alignment属性控制文本对齐方式。 然后保存为.ui结尾的文件 2....这里我修改了鼠标点击后会被自动调用的mousePressEvent和窗口绘制时会被调用的paintEvent class WINDOW(QtWidgets.QMainWindow): def

19710

简易Qt图片查看器

本篇使用Qt来实现一个可以查看任意目录下图片的图片查看器,可以电脑中任意目录下图片的查看,并且可以通过鼠标滚轮以及鼠标移动来实现图片的灵活放大、缩小,此外,在打开一个图片后,若该目录下还有其它图片,通过左右切换...图像显示窗口,专门写了一个类来实现图片显示,缩放显示等功能。...图片的显示还支持鼠标操作,可以实现滚轮的放大缩小,移动显示。...滚动的移动,使用的wheelEvent来获取滚轮事件,当滚轮向前滑动时,增大缩放比例,当滚轮向后滑动时,减小缩放比例,然后调用update函数触发图像重绘。...,使用的mouseMoveEvent来获取鼠标移动事件,并结合mousePressEvent来检查鼠标左键是否按下,当鼠标左键按下且鼠标移动时,才进行图片的移动显示。

2.2K10

原生 JS 手写一个优雅的图片预览功能,带你吃透背后原理

最终效果如下:图片图片缩放(PC)PC实现图片缩放相对是比较简单的,我们利用滚轮事件监听并改变 scale 值即可。...,事实如果鼠标不断移动且幅度很大时会出现抖动,需要消除原点位置突然改变带来的影响才能完全解决这个问题(期初我并未发现,后面在做移动端缩放时简直是灾难级体验)而由于PC问题并不明显,这里先按下不表,后面会详细提到...这么说有点抽象,我们还是回到代码双指缩放时将这个偏移量减掉,同样的PC端的缩放,我们也加入对偏移量的修正:let scaleOrigin = { x: 0, y: 0, }// 获取中心改变的偏差...虽然浏览器滚动对应的其实是 scroll 事件,但我们PC滚动通常都是用利用滚轮(笔记本触控板也被视作滚轮),所以滚轮事件阻止系统默认事件也就阻止了滚动,但不是完全阻止,因为滚动条没隐藏的话还是可以拖动来滚动页面的...本例的代码这个CSS本身是没有意义的,为的只是触发css3硬件加速来提升性能,那为什么不直接使用 translate3d() 呢?

2.5K81

【错误记录】Java AWT 图形界面编程设置键盘事件没有响应 ( 设置键盘事件 | 键盘事件必须设置到 Frame JFrame 对象 )

一、报错信息 ---- 实现一个需求 , 按键 数字 按键 , 让 Canvas 画布绘制的图像根据按下的数值进行缩放 ; AWT 自定义 Canvas 组件 , 添加按键事件 , 下面定义的...repaint(); // 重新绘制画布 } } }); 出现问题的博客代码 : 【Java AWT 图形界面编程】使用小键盘按键缩放...Canvas 画布绘制的背景图像 ( 键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 ) ; 二、解决方案 ---- 鼠标事件 , 可以添加到具体的...Component 组件 , 但是凡是涉及到 键盘 的事件 , 必须添加到顶级组件 , 也就是窗口组件 , 如 : Frame / JFrame 组件 , 才能生效 ; 否则就会出现上述情况 ,...组件设置的 KeyAdapter / KeyListener 监听 , 根本不回调相应的回调函数 ; 将 KeyAdapter / KeyListener 监听器 设置到 JFrame 窗口上 , 此时该应用按下对应的按键

50720
领券