Рисование многоугольников с помощью pyqt5Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Рисование многоугольников с помощью pyqt5

Сообщение Anonymous »

Привет
Я пытаюсь создать программу, которая позволит пользователям рисовать различные типы фигур, рисуя простые линии с помощью Pyqt5.Программа должна определить, закрыта ли фигура, а затем автоматически заполнить область внутри нее определенным цветом (например, красным в этом коде)
Проблема: мне нужно добавить модификацию, если внутри этого многоугольника нарисована еще одна линия и делит многоугольник на несколько частей, цвет внутри этой созданной зоны можно изменить на что-то другое (например, на синий по умолчанию), но его также можно редактировать (с помощью щелчка правой кнопкой мыши), чтобы изменить дополнительные параметры цвета и, наконец, получить эффект наведения при наведении курсора мыши. перемещается по ним, так как пользователь может почувствовать, что многоугольник разделен на разные зоны.
Я приведу пример ниже, чтобы вы лучше поняли, что я имею в виду, вместе с code.tnx
Сначала создадим простой многоугольник:
Изображение

Затем мы попробуем разделить его на разные зоны:
Изображение

А вот мой код:
import sys
from PyQt5.QtWidgets import QApplication, QGraphicsView, QGraphicsScene, QGraphicsLineItem, QMenu
from PyQt5.QtCore import Qt, QPointF,QLineF
from PyQt5.QtGui import QPainter, QPen, QBrush, QColor , QPolygonF

class UserLineItem(QGraphicsLineItem):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setPen(QPen(Qt.black, 5))

def p1(self):
return self.line().p1()

def p2(self):
return self.line().p2()

def setP1(self, p):
line = self.line()
if line.p1() != p:
line.setP1(p)
self.setLine(line)

def setP2(self, p):
line = self.line()
if line.p2() != p:
line.setP2(p)
self.setLine(line)

class MeasuredGraphicsView(QGraphicsView):
gridSpacing = 25
def __init__(self):
super().__init__()

self.setRenderHint(QPainter.Antialiasing)
self.resize(800, 600)

self.scene = QGraphicsScene(self)
self.setScene(self.scene)
self.scene.setSceneRect(-500, -500, 1000, 1000)

self.currentLine = None
self.vertexLines = {}

def drawBackground(self, qp, rect):
normal = QPen(Qt.lightGray, 1, Qt.DotLine)
dark = QPen(Qt.black, 1, Qt.DotLine)

rect &= self.scene.sceneRect()
left, top, right, bottom = rect.getCoords()

qp.save()

x = left // self.gridSpacing * self.gridSpacing
while x

Подробнее здесь: https://stackoverflow.com/questions/792 ... sing-pyqt5
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Рисование многоугольников с помощью pyqt5
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Рисование многоугольников на большом микроскопическом изображении с помощью Scikit-Image
    Anonymous » » в форуме Python
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Рисование текста в центре растрового изображения с помощью QPainter из PyQt5 [дубликат]
    Anonymous » » в форуме Python
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при установке pyqt5 (pip install pyqt5)
    Anonymous » » в форуме Python
    0 Ответы
    46 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при установке pyqt5 (pip install pyqt5)
    Anonymous » » в форуме Python
    0 Ответы
    109 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»