派生社区 Python GUI 编程课程(下卷):13. 圆角效果

[复制链接]
作者: ika | 时间: 2021-1-20 14:24:17 | 高级编程|
5 341
发表于 2021-1-20 14:24:17| 显示全部楼层 |阅读模式


前情回顾:

派生社区 Python GUI 编程课程(下卷):12. 加载动态数据
https://bbs.266.la/forum.php?mod=viewthread&tid=1378
(出处: 派生社区)






网盘下载地址:

游客,如果您要查看本帖隐藏内容请回复





一、头像加载函数与圆角函数

新函数:Line - > load_image(self ,url, label)
该函数用于加载头像的图片信息。
  • QPixmap =  QT中的位图。
  • pixmap.loadFromData = 从路径或者bytes中加载图片。
  • label.setPixmap = 设置标签的图片
  • pixmap.scaled = 缩放图片的大小

[Python] 纯文本查看 复制代码
def load_image(self ,url, label):
    pixmap = QPixmap()
    pixmap.loadFromData(QByteArray(requests.get(url).content))
    label.setPixmap(pixmap.scaled(QSize(42,42)))


新函数 Line -> round_sharp(pixmap,width,height)
该函数用于实现图片的圆角化效果。
  • target.fill = 填充位图
  • Qt.transparent = 透明
  • Qt.KeepAspectRatioByExpading = 长宽比模式:扩大时保持长宽比。
  • Qt.SmoothTransfromation = 转换模式:采用平滑模式转换
  • QPainter = 根据创建画板
  • QPainter.setRenderHint = 设置画板属性
  • QPainterPath.addRoundedRect = 创建绘画路径
  • QPainter.setClipPath = 设置路径
  • QPainter.drawPixmap = 画图像

[Python] 纯文本查看 复制代码
def round_sharp(pixmap,width,height):
    target = QPixmap(QSize(width,height))
    target.fill(Qt.transparent)
    p = pixmap.scaled(width,height,Qt.KeepAspectRatioByExpading,Qt.SmoothTransfromation)
​
    painter = QPainter(target)
    painter.setRenderHint(QPainter.Antialiasing,True) # 抗锯齿
    painter.setRenderHint(QPainter.SmoothPixmapTransform,True) # 开启图像平滑
    painter.setRenderHint(QPainter.HighQualityAntialiasing,True) # 开启高画质模式下的抗锯齿
​
    path = QPainterPath() # 路径
    path.addRoundedRect(0, 0, width, height, width/2, height/2) # 开启圆角矩形
​
    painter.setClipPath(path) 
    painter.drawPixmap(0, 0, p)
    return target

评分

参与人数 1好评 +1 金币 +10 收起 理由
大司命 + 1 + 10 感谢发布原创作品,派生因你更精彩!

查看全部评分

发表于 2021-5-24 09:17:41| 显示全部楼层
谢谢分享
回复

使用道具 举报

签到天数: 19 天

发表于 2021-3-2 22:05:11| 显示全部楼层
#在这里快速回复#        感谢发布原创作品,派生因你更精彩!
回复

使用道具 举报

发表于 2021-2-28 18:12:00| 显示全部楼层
111111111111111111
回复

使用道具 举报

发表于 2021-1-24 20:27:36| 显示全部楼层
看完了,感觉这个有点难。。。
回复

使用道具 举报

发表于 2021-1-20 20:50:55| 显示全部楼层
第一个来支持
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

!jz_fbzt! 快速回复 !jz_sctz! !jz_fhlb! 按钮
快速回复 返回列表 返回顶部