Я рисую треугольники/многоугольники в QPainter, используя сглаживание, полученное при рендеринге 3D-моделей. Если два многоугольника нарисованы рядом друг с другом, между ними есть зазор.
Вот некоторый код (в PyQt), чтобы продемонстрировать проблему:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Window(QLabel):
def __init__(self):
QLabel.__init__(self)
pixmap = QPixmap(300,300)
pixmap.fill()
painter = QPainter(pixmap)
painter.setRenderHint(QPainter.Antialiasing)
painter.setPen(QPen(Qt.NoPen))
painter.setBrush(QBrush(QColor('black')))
poly1 = QPolygonF()
for x, y in ((0,0),(0,240.5),(210.3,0)):
poly1 << QPointF(x,y)
painter.drawPolygon(poly1)
poly2 = QPolygonF()
for x, y in ((210.3,0),(210.3,240),(0,240.5)):
poly2 << QPointF(x,y)
painter.drawPolygon(poly2)
painter.end()
self.setPixmap(pixmap)
app = QApplication(sys.argv)
win = Window()
win.show()
app.exec_()
Как я могу предотвратить эту проблему? Как предлагает ниже vahancho, я мог бы добавить границы к каждому многоугольнику или увеличить его на полпикселя в каждом направлении. К сожалению, это делает соединения видимыми, если заливка/перо частично прозрачны.
painter.setPen(QPen(Qt.NoPen))
? - person vahancho   schedule 03.11.2014