author | title | date | tags | categories | ||||
---|---|---|---|---|---|---|---|---|
Irony |
PyQt5显示.9格式的PNG图片 |
2018-10-26 03:00:08 -0700 |
|
例子 |
做过安卓开发的和使用过QQ的都知道.9.png
这种图片格式,效果就如QQ的聊天气泡一样可以拉伸,这种格式的图片允许开发人员定义可扩展区域,当需要延伸图片以填充比图片本身更大区域时,可扩展区的内容被延展;允许开发人员定义内容显示区,用于显示文字或其他内容。目前在Github
上有两个C++版本的,在这里我把它们都用Python实现了一遍。另外一个我也为PyQt
提供了编译好的pyd文件。
在Github开源库中搜索到两个C++版本的
- 一个是 NinePatchQt
- 一个是 QtNinePatch
这里也分为两个版本,都是基于上面的C++源码翻译改写过来的,具体的例子见项目里面的测试代码吧。
- QtNinePatch是参考第一个源码编写,用法是在
paintEvent
中调用 - QtNinePatch2是参考第二个源码编写,用法是
pixmap = QtNinePatch.createPixmapFromNinePatchImage(self.image, self.width(), self.height())
直接得到一个处理好的QPixmap
对象来使用
- 建议优先使用pyd版本的(后续提供Python3.4 3.5 3.6 3.7 编译好的32为库文件),也可以自行编译,编译步骤见下文。
- 其次可以使用纯python版本2的(个人觉得方便调用)
- 最后再考虑纯python版本1的吧
- 以上为个人意见,两个C++版本的写法不一样,但是核心算法应该是类似的。
- 首先要安装好Qt、PyQt5、编译安装对应的sip、对应的VC++编译工具
- 用Qt Creator 打开pro文件进行编译
- 进入源码中的sip文件夹修改configure.py文件
# 这里是你的VC版本和对应的Qt目录中的文件夹
config.platform = "win32-msvc2010"
qt_path = 'D:/soft/Qt/Qt5.5.1/5.5/msvc2010'
- 最后执行python configure.py来编译
https://github.com/PyQt5/PyQt/tree/master/QLabel