利用QPixmap显示图片

利用QPixmap显示图片利用 QPixmap 显示图片我们来实现在窗口上显示图片 并将图片进行平移 缩放 旋转和扭曲 这里我是利用 QPixmap 类来实现图片显示的 一 利用 QPixmap 显示图片 1 将以前的工程文件夹进行复制备份 我们这里将工程文件夹改名为 painter05 经常备份工程目录 是个很好的习惯 2 在工程文件夹的 debug 文件夹中新建文件夹 我这里命名为

利用QPixmap显示图片

我们来实现在窗口上显示图片,并将图片进行平移,缩放,旋转和扭曲。这里我是利用QPixmap类来实现图片显示的。

一、利用QPixmap显示图片。

1.将以前的工程文件夹进行复制备份,我们这里将工程文件夹改名为painter05。(经常备份工程目录,是个很好的习惯)

2.在工程文件夹的debug文件夹中新建文件夹,我这里命名为images,用来存放要用的图片。我这里放了一张linux.jpg的图片。

3.在Qt Creator中打开工程。(即打开工程文件夹中的.pro文件)

4.将dialog.cpp文件中的paintEvent()函数更改如下。

这里新建QPixmap类对象,并为其添加图片,然后在以(0,0)点开始的宽和高都为100的矩形中显示该图片。你可以改变矩形的大小,看一下效果。最终程序运行效果如下。

利用QPixmap显示图片

二、利用更改坐标原点实现平移。

Qpainter类中的translate()函数实现坐标原点的改变,改变原点后,此点将会成为新的原点(0,0);

例如:

这里将(100,100)设置为了新的坐标原点,所以下面在(0,0)点贴图,就相当于在以前的(100,100)点贴图。效果如下。

利用QPixmap显示图片

三、实现图片的缩放。

我们可以使用QPixmap类中的scaled()函数来实现图片的放大和缩小。

例如:

其中参数Qt::KeepAspectRatio,是图片缩放的方式。我们可以查看其帮助。将鼠标指针放到该代码上,当出现F1提示时,按下F1键,这时就可以查看其帮助了。当然我们也可以直接在帮助里查找该代码。

这是个枚举变量,这里有三个值,只看其图片就可大致明白,Qt::IgnoreAspectRatio是不保持图片的长宽比,Qt::KeepAspectRatio是在给定的矩形中保持长宽比,最后一个Qt::KeepAspectRatioByExpanding也是保持长宽比,但可能超出给定的矩形。这里给定的矩形是由我们显示图片时给定的参数决定的,例如painter.drawPixmap(0,0,100,100,pix);就是在以(0,0)点为起始点的宽和高都是100的矩形中。

程序运行效果如下。

利用QPixmap显示图片

四、实现图片的旋转。

旋转使用的是QPainter类的rotate()函数,它默认是以原点为中心进行旋转的。我们要改变旋转的中心,可以使用前面讲到的translate()函数完成。

例如:

这里必须先改变旋转中心,然后再旋转,然后再将原点复原,才能达到想要的效果。

运行程序,效果如下。

利用QPixmap显示图片

五、实现图片的扭曲。

实现图片的扭曲,是使用的QPainter类的shear(qreal sh,qreal sv)函数完成的。它有两个参数,前面的参数实现横行变形,后面的参数实现纵向变形。当它们的值为0时,表示不扭曲。

例如:

效果如下:

利用QPixmap显示图片

其他扭曲效果:

painter.shear(0,0.5); //纵向扭曲        

           利用QPixmap显示图片        

painter.shear(0.5,0.5); //横纵扭曲

             利用QPixmap显示图片

图片形状的变化,其实就是利用坐标系的变化来实现的。

六、坐标系状态的保护。

我们可以先利用 save() 函数来保存坐标系现在的状态,然后进行变换操作,操作完之后,再用 restore() 函数将以前的坐标系状态恢复,其实就是一个入栈和出栈的操作。

例如:



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207083.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午2:29
下一篇 2026年3月19日 下午2:29


相关推荐

  • linux top cpu核数查看,Linux怎么查看CPU核数?

    linux top cpu核数查看,Linux怎么查看CPU核数?在Linux中,可以使用“cat/proc/cpuinfo|grep”cpucores”|uniq”来查看CPU核数,即每个物理CPU中core的个数。课程推荐:《linux课程》一、知识点介绍1、cpu信息记录在/proc/cpuinfo中。2、Linux中的Top相当于win系统下的任务管理器,也可以用来查询3、CPU总核数=物理CPU个数*每颗物理CPU的核数4、总逻辑CP…

    2025年6月26日
    3
  • 在pycharm中调试celery、gunicorn

    在pycharm中调试celery、gunicorncelery 启动代码 celery worker py 如下 fromappimpor appfromflask celeryimport create app celery Celery app if name main celery start 运行配置点击 PyCharm 中工具栏的 EditConfigur 新增名为 celery 的 Configuratio

    2026年3月27日
    2
  • Pacemaker详解

    Pacemaker详解一 前言 云计算与集群系统密不可分 作为分布式计算和集群计算的集大成者 云计算的基础设施必须通过集群进行管理控制 而作为拥有大量资源与节点的集群 必须具备一个强大的集群资源管理器 Clustersyste CSM 来调度和管理集群资源 对于任何集群而言 集群资源管理器是整个集群能够正常运转的大脑和灵魂 任何集群资源管理器的缺失和故障都会导致集群陷人瘫痪混乱的状态 Openstack 的众多组件服务既可以集成到单个节点上运行 也可以在集群中分布式运行 但是 要实现承载业务系统的高

    2026年3月18日
    2
  • WebClien使用国外代理服务器访问URL

    WebClien使用国外代理服务器访问URLusing(WebClientwc=newWebClient()){//代理服务器的IP和PortWebProxymyProxy=newWebProxy(CommonBLL.server,Convert.ToInt32(CommonBLL.port))…

    2022年4月29日
    66
  • JavaScript语法糖的简析

    JavaScript语法糖的简析前言学习 JS 中函数的时候 看到了原型链的内容 不理解 查资料 发现了语法糖的定义 首先说明一下语法糖的定义百度百科上的定义 语法糖 Syntacticsug 也译为糖衣语法 是由英国计算机科学家彼得 约翰 兰达 PeterJ Landin 发明的一个术语 指计算机语言中添加的某种语法 这种语法对语言的功能并没有影响 但是更方便程序员使用 正文一构造函数构造函数比较容易理解

    2026年3月26日
    1
  • AI浏览器自动化实战

    AI浏览器自动化实战

    2026年3月15日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号