2017-05-28 3 views
0

Ich zeichne eine Linie, aber wie halten Sie die Linie 'jag' frei und sauber?Wie glätten gezackte Kanten auf gekrümmten Linien und Diagonalen auf Pyqt4?

enter image description here

Dies ist der Code, der über das Bild zieht. Hier können wir bemerken, dass das Bild voller gezackter Kanten ist.

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

import sys 
from PyQt4 import QtGui, QtCore 

class Example(QtGui.QWidget): 

    def __init__(self): 
     super(Example, self).__init__() 
     self.initUI() 

    def initUI(self): 
     self.drawingPanel = DrawingPanel(self) 

     verticalLayout = QtGui.QVBoxLayout(self) 
     verticalLayout.addWidget(self.drawingPanel) 

     self.setLayout(verticalLayout) 
     self.resize(400, 300) 

     self.setWindowTitle('Review') 
     self.show() 


class DrawingPanel(QtGui.QGraphicsView): 

    def __init__(self, parent): 
     super(DrawingPanel, self).__init__(parent) 

     scene = QtGui.QGraphicsScene() 
     self.setScene(scene) 

     pencil = QtGui.QPen(QtCore.Qt.black, 2, QtCore.Qt.SolidLine) 
     self.scene().addLine(QtCore.QLineF(0, 0, 300, 600), pencil) 


def main(): 

    app = QtGui.QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 


if __name__ == '__main__': 
    main() 

Hier gibt es einen Zoom auf das Bild:

enter image description here

Einige andere Fragen zu diesem Thema:

  1. Smoothing jagged edges without anti-aliasing - Unity3D
  2. How to enable anti-aliasing in A-Frame?

Antwort

1

Sie müssen Anti-Aliasing in QGraphicsView aktivieren:

class DrawingPanel(QtGui.QGraphicsView): 

    def __init__(self, parent): 
     QtGui.QGraphicsView.__init__(self, parent) 
     self.setRenderHint(QtGui.QPainter.Antialiasing) 
     [...] 
+0

Dank. Es ist auch möglich, mehrere Sätze als: 'self.setRenderHint (QtGui.QPainter.Antialiasing); self.setRenderHint (QtGui.QPainter.TextAntialiasing); self.setRenderHint (QtGui.QPainter.SmoothPixmapTransform); self.setRenderHint (QtGui.QPainter.HighQualityAntialiasing); '? – user

Verwandte Themen