QPainterPath PyQt5 рисует сложные фигуры - PullRequest
0 голосов
/ 31 мая 2018

Hellow.Как я могу нарисовать что-то похожее на рисунок, используя путь qpainter?У кого-нибудь есть примеры кода?

i need to get smth like this

1 Ответ

0 голосов
/ 31 мая 2018

Кривая Безье - это кубическая линия.Кривая Безье в 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_())

enter image description here

...