PyQt5显示.9格式的PNG图片
做过安卓开发的和使用过 QQ 的都知道 .9.png 这种图片格式,效果就如 QQ 的聊天气泡一样可以拉伸,这种格式的图片允许开发人员定义可扩展区域,当需要延伸图片以填充比图片本身更大区域时,可扩展区的内容被延展;允许开发人员定义内容显示区,用于显示文字或其他内容。目前在 Github 上有两个 C++ 版本的,在这里我把它们都用 Python 实现了一遍。另外一个我也为 PyQt 提供了编译好的 pyd 文件。
# C++ 版本
在 Github 开源库中搜索到两个 C++ 版本的
一个是 NinePatchQt
一个是 QtNinePatch
# PyQt5 版本
这里也分为两个版本,都是基于上面的 C++ 源码翻译改写过来的,具体的例子见项目里面的测试代码吧。
QtNinePatch 是参考第一个源码编写,用法是在 paintEvent 中调用
QtNinePatch2 是参考第二个源码编写,用法是 pixmap = QtNinePatch.createPixmapFromNinePatchImage(self.image, self.width(), self. ...
PyQt5圆形图片
实现圆形图片的方法有很多,比如用遮罩(mask), 裁切等等。这里比较几种实现方式,选出个人认为最优的方案。
https://github.com/PyQt5/PyQt/blob/master/QLabel/CircleImage.py
# 采用 mask 方式
具体参考 【Qt】QLabel 实现的圆形图像 - 米罗西 - 博客园
# 画圆形遮盖(适合纯色背景)
原理是在原图片上画一个 4 角有颜色,中间圆形镂空的图片。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Created on 2017年8月25日
@author: Irony."[讽刺]
@site: https://pyqt5.com, https://github.com/892768447
@email: 892768447@qq.com
@description:
'''
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QPainter, QPainterPath
from Py ...