# QLabel
- 目录
- [图片加载显示](#1图片加载显示)
- [图片旋转](#2图片旋转)
- [仿网页图片错位显示](#3仿网页图片错位显示)
- [显示.9格式图片(气泡)](#4显示9格式图片气泡)
- [圆形图片](#5圆形图片)
## 1、图片加载显示
[运行 ShowImage.py](ShowImage.py)
通过3种方式加载图片文件和显示gif图片
1. 通过`QPixmap("xxx.jpg")`加载
2. 通过`pyrcc5`转换res.qrc为res_rc.py文件,可以直接import加载
1. 转换命令`pyrcc5 res.qrc -o res_rc.py`
2. `import res_rc`
3. 此时可以通过`QPixmap(":/images/head.jpg")`来加载
3. 通过rcc命令转成为二进制文件res.rcc
1. 转换命令`Tools/rcc.exe -binary res2.qrc -o res.rcc`
2. 这里把资源前缀修改下(/myfile),见res2.qrc文件
3. 通过`QResource.registerResource("res.rcc")`注册
4. 此时可以通过`QPixmap(":/myfile/images/head.jpg")`来加载
4. 通过xpm数组加载
1. 通过工具`Tools/Image2XPM.exe`来转换
2. 这里把转换的xpm数组直接放到py文件中当做一个变量
3. 见xpmres.py中的image_head
4. 此时可以通过`QPixmap(image_head)`来加载
5. 通过`QMovie`加载gif图片
![ShowImage](ScreenShot/ShowImage.gif)
## 2、图片旋转
[运行 ImageRotate.py](ImageRotate.py)
1. 水平翻转 `QImage.mirrored(True, False)`
2. 垂直翻转 `QImage.mirrored(False, True)`
3. 旋转90的整数倍使用`QTransform`比较友好
4. 任意角度采用`QPainter.rotate`
![ImageRotate](ScreenShot/ImageRotate.gif)
## 3、仿网页图片错位显示
[运行 ImageSlipped.py](ImageSlipped.py)
1. 设置`setMouseTracking(True)`开启鼠标跟踪
2. 重写`mouseMoveEvent`鼠标移动事件获取偏移量
3. 重写`paintEvent`事件绘制图片
![ImageSlipped](ScreenShot/ImageSlipped.gif)
## 4、显示.9格式图片(气泡)
[运行 NinePatch.py](NinePatch.py) | [运行 QtNinePatch.py](QtNinePatch.py) | [运行 QtNinePatch2.py](QtNinePatch2.py)
什么叫.9.PNG呢,这是安卓开发里面的一种特殊的图片
这种格式的图片在android 环境下具有自适应调节大小的能力。
(1)允许开发人员定义可扩展区域,当需要延伸图片以填充比图片本身更大区域时,可扩展区的内容被延展。
(2)允许开发人员定义内容显示区,用于显示文字或其他内容
目前手机QQ中很多漂亮的的聊天气泡就是.9格式的png图片
在Github开源库中搜索到两个C++版本的
1.一个是NinePatchQt https://github.com/Roninsc2/NinePatchQt
2.一个是QtNinePatch https://github.com/soramimi/QtNinePatch
### For PyQt
1、目前针对第一个库在2年前用Python参考源码重新写一个见 `Lib/NinePatch.py`
2、这次针对第二个库用Python编写的见`Lib/QtNinePatch2.py`。用C++编写的pyd版本见`Lib/QtNinePatch`目录
### 说明
1、建议优先使用pyd版本的(后续提供Python3.4 3.5 3.6 3.7 编译好的32为库文件),也可以自行编译,编译步骤见下文。
2、其次可以使用Python写的第二个版本`Lib/QtNinePatch2.py`(个人觉得方便调用)
3、最后再考虑第一个版本吧
4、以上为个人意见,两个C++版本的写法不一样,但是核心算法应该是类似的。
### 自行编译
1、首先要安装好Qt、PyQt5、编译安装对应的sip、对应的VC++编译工具
2、用Qt Creator 打开pro文件进行编译
3、进入源码中的sip文件夹
4、修改`configure.py`文件
```python
# 这里是你的VC版本和对应的Qt目录中的文件夹
config.platform = "win32-msvc2010"
qt_path = 'D:/soft/Qt/Qt5.5.1/5.5/msvc2010'
```
5、`python configure.py`
![NinePatchImage](ScreenShot/NinePatchImage.gif)
### 5、圆形图片
[运行 CircleImage.py](CircleImage.py)
使用`QPainter`的`setClipPath`方法结合`QPainterPath`对图片进行裁剪从而实现圆形图片。
![CircleImage](ScreenShot/CircleImage.png)
没有合适的资源?快使用搜索试试~ 我知道了~
QLabel.7z
共43个文件
py:14个
gif:6个
png:5个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 94 浏览量
2021-11-11
11:32:09
上传
评论
收藏 7.59MB 7Z 举报
温馨提示
QLabel.7z
资源推荐
资源详情
资源评论
收起资源包目录
QLabel.7z (43个子文件)
QLabel
README.en.md 0B
QtNinePatch2.py 1KB
NinePatch.py 1KB
Lib
QtNinePatch
QtNinePatch.pro.user 13KB
QtNinePatch.h 486B
sip
configure.py 2KB
QtNinePatch.pyd 11KB
QtNinePatch.sip 235B
__init__.py 0B
QtNinePatch.dll 13KB
QtNinePatch.cpp 4KB
QtNinePatch.pro 692B
QtNinePatch2.py 4KB
NinePatch.py 14KB
__init__.py 0B
xpmres.py 34KB
res_rc.py 28KB
ImageRotate.py 4KB
Tools
Image2XPM.exe 1.62MB
rcc.exe 845KB
CircleImage.py 2KB
QtNinePatch.py 1KB
ImageSlipped.py 2KB
README.md 4KB
ScreenShot
CircleImage.png 55KB
NinePatchImage.gif 290KB
ImageSlipped2.gif 2.27MB
ShowImage.gif 217KB
ImageRotate.gif 937KB
ImageSlipped.gif 3.09MB
ShowImage.py 2KB
Data
fg1.png 413KB
Images
head.jpg 13KB
head.xpm 33KB
res.qrc 86B
skin_aio_friend_bubble_pressed.9.png 6KB
bg.png 54KB
head.jpg 6KB
fg.png 248KB
res2.qrc 92B
res.rcc 7KB
bg1.jpg 64KB
loading.gif 97KB
共 43 条
- 1
资源评论
应用市场
- 粉丝: 469
- 资源: 3817
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功