为了账号安全,请及时绑定邮箱和手机立即绑定

用圆形区域剪辑文本

用圆形区域剪辑文本

ibeautiful 2021-09-28 21:21:02
如何制作带有文本的透明椭圆或用文本替换椭圆边框?用边框替换文本ellipse = QPainter(self)ellipse.setOpacity(0.6)ellipse.setPen(QtGui.QPen(Qt.darkGreen, 4, Qt.DashLine))    # Any way to replace 'DashLine with Text ?'ellipse.setBrush(QBrush(QColor(self.window_bg), Qt.SolidPattern))ellipse.drawEllipse(0, 0, self.ellipse_width, self.ellipse_height)椭圆内的文字ellipse = QPainter(self)ellipse.setOpacity(0.6)ellipse.setBrush(QBrush(QColor('#000000'), Qt.SolidPattern))ellipse.drawEllipse(0, 0, 300, 300)ellipse.drawText(10, 10, 'Random Text')
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

你必须使用一个setClipPath():


import random

from PyQt5 import QtCore, QtGui, QtWidgets


class MainWindow(QtWidgets.QMainWindow):

    def paintEvent(self, event):

        window_bg = "#0011ff"

        ellipse_width, ellipse_height = self.width(), self.height()

        r = QtCore.QRectF(0, 0, ellipse_width, ellipse_height)

        text = "Stack OverFlow :-)"


        path = QtGui.QPainterPath()

        path.addEllipse(r)


        painter = QtGui.QPainter(self)

        painter.setRenderHint(QtGui.QPainter.Antialiasing)

        painter.setClipPath(path, QtCore.Qt.IntersectClip)

        painter.setOpacity(0.6)

        painter.setBrush(QtGui.QBrush(QtGui.QColor('#000000'), QtCore.Qt.SolidPattern))

        painter.setPen(QtGui.QPen(QtCore.Qt.darkGreen, 4, QtCore.Qt.DashLine))    

        painter.setBrush(QtGui.QBrush(QtGui.QColor(window_bg), QtCore.Qt.SolidPattern))

        painter.drawEllipse(r)


        # draw text in random positions

        for i in range(100):

            x = random.randint(0, self.width())

            y = random.randint(0, self.height())

            painter.drawText(x, y, text)



if __name__ == '__main__':

    import sys

    app = QtWidgets.QApplication(sys.argv)

    w = MainWindow()

    w.resize(640, 480)

    w.show()

    sys.exit(app.exec_())

//img1.sycdn.imooc.com//615316e50001c9de06560533.jpg

查看完整回答
反对 回复 2021-09-28
  • 1 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号