【问题标题】:QPainterPath PyQt5 draw difficult figuresQPainterPath PyQt5 绘制困难人物
【发布时间】:2018-11-10 08:16:11
【问题描述】:

你好。如何使用 qpainter 路径在图片上绘制类似图形?有人有一些代码示例吗?

【问题讨论】:

    标签: pyqt5 qgraphicsscene qpainterpath


    【解决方案1】:

    贝塞尔曲线是一条三次线。 PyQt5 中的贝塞尔曲线可以使用 QPainterPath 创建。画家路径是由许多图形构建块组成的对象,例如矩形、椭圆、直线和曲线。

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    
    """
    ZetCode PyQt5 tutorial 
    
    This program draws a Bézier curve with 
    QPainterPath.
    
    Author: Jan Bodnar
    Website: zetcode.com 
    Last edited: August 2017
    """
    
    from PyQt5.QtWidgets import QWidget, QApplication
    from PyQt5.QtGui import QPainter, QPainterPath
    from PyQt5.QtCore import Qt
    import sys
    
    class Example(QWidget):
    
        def __init__(self):
            super().__init__()
    
            self.initUI()
    
    
        def initUI(self):      
    
            self.setGeometry(300, 300, 380, 250)
            self.setWindowTitle('Bézier curve')
            self.show()
    
    
        def paintEvent(self, e):
    
            qp = QPainter()
            qp.begin(self)
            qp.setRenderHint(QPainter.Antialiasing)
            self.drawBezierCurve(qp)
            qp.end()
    
    
        def drawBezierCurve(self, qp):
    
            path = QPainterPath()
            path.moveTo(30, 30)
            path.cubicTo(30, 30, 200, 350, 350, 30)
    
            path.addEllipse(90, 30, 200, 70)          # +++
    
            qp.drawPath(path)
    
    
    if __name__ == '__main__':
    
        app = QApplication(sys.argv)
        ex = Example()
        sys.exit(app.exec_())
    

    【讨论】:

    • 谢谢,但是使用painter path 来绘制困难的图形(由矩形、圆形等组成),而不是贝塞尔曲线呢?我已经把文档变红了,但我自己没能做到(我需要某种截断的椭圆,我应该使用这条曲线吗?
    • 画出你需要的东西。我添加了椭圆。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2014-04-26
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    相关资源
    最近更新 更多