PyQt5 QPainter绘制有轮廓的QFont字体并保存为图片

效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一般而言,使用QPainter的drawText函数绘制QFont是不能绘制轮廓的

但是我们可以获取绘制时候字体的轮廓,然后用drawPath去绘制它

因此有了如下解决方案


from PyQt5.QtGui import QPainter,QColor,QFont,QBrush,QFontMetrics, QPixmap,QPen,QPainterPath

self.font = 你的QFont

metrics = QFontMetrics(self.font)
path = QPainterPath()
pen = QPen(Qt.red) # 你的轮廓颜色

penwidth = 2 # 你的轮廓大小

pen.setWidth(penwidth)

# 以下代码用于获取字体绘制中的居中的位置,因此绘制出来都是居中的字体
len = metrics.width(self.text)
w = self.width()
px = (len - w) / 2
if px < 0:
    px = -px
py = (self.height() - metrics.height()) / 2 + metrics.ascent()
if py < 0:
    py = -py

print(px,py)

path.addText(px, py, self.font, self.text) # 将绘制字体的路径添加到path中
qp.setRenderHint(QPainter.Antialiasing) # 开启抗锯齿,不然看起来很难看
qp.strokePath(path, pen) # 描边
#qp.drawPath(path) # 画边
qp.fillPath(path, QBrush(Qt.white)) # 填充path,其中QBrush可以设置填充颜色

你可能感兴趣的:(【——Qt相关——】)