瀏覽代碼

Cache painter, cleanup

Test OpenGL based drawing. Much faster, but lower quality and produced errors
at certain zoom levels, so leave it commented out.
Michael Pitidis 13 年之前
父節點
當前提交
b93a0c51cf
共有 1 個文件被更改,包括 5 次插入3 次删除
  1. 5 3
      canvas.py

+ 5 - 3
canvas.py

@@ -3,6 +3,7 @@ from math import sqrt
 
 
 from PyQt4.QtGui import *
 from PyQt4.QtGui import *
 from PyQt4.QtCore import *
 from PyQt4.QtCore import *
+from PyQt4.QtOpenGL import *
 
 
 from shape import Shape
 from shape import Shape
 
 
@@ -17,6 +18,7 @@ CURSOR_DRAW    = Qt.CrossCursor
 CURSOR_MOVE    = Qt.ClosedHandCursor
 CURSOR_MOVE    = Qt.ClosedHandCursor
 CURSOR_GRAB    = Qt.OpenHandCursor
 CURSOR_GRAB    = Qt.OpenHandCursor
 
 
+#class Canvas(QGLWidget):
 class Canvas(QWidget):
 class Canvas(QWidget):
     zoomRequest = pyqtSignal(int)
     zoomRequest = pyqtSignal(int)
     scrollRequest = pyqtSignal(int, int)
     scrollRequest = pyqtSignal(int, int)
@@ -47,6 +49,7 @@ class Canvas(QWidget):
         self._hideBackround = False
         self._hideBackround = False
         self.hideBackround = False
         self.hideBackround = False
         self.highlightedShape = None
         self.highlightedShape = None
+        self._painter = QPainter()
         # Menus:
         # Menus:
         self.menus = (QMenu(), QMenu())
         self.menus = (QMenu(), QMenu())
         # Set widget options.
         # Set widget options.
@@ -79,8 +82,6 @@ class Canvas(QWidget):
                 self.repaint()
                 self.repaint()
             elif self.selectedShape:
             elif self.selectedShape:
                 self.selectedShapeCopy = self.selectedShape.copy()
                 self.selectedShapeCopy = self.selectedShape.copy()
-               # self.selectedShapeCopy.line_color = QColor(255, 0, 0, 64)
-                #self.selectedShapeCopy.fill_color = QColor(0, 255, 0, 64)
                 self.repaint()
                 self.repaint()
             return
             return
 
 
@@ -277,9 +278,10 @@ class Canvas(QWidget):
         if not self.pixmap:
         if not self.pixmap:
             return super(Canvas, self).paintEvent(event)
             return super(Canvas, self).paintEvent(event)
 
 
-        p = QPainter()
+        p = self._painter
         p.begin(self)
         p.begin(self)
         p.setRenderHint(QPainter.Antialiasing)
         p.setRenderHint(QPainter.Antialiasing)
+        p.setRenderHint(QPainter.HighQualityAntialiasing)
         p.setRenderHint(QPainter.SmoothPixmapTransform)
         p.setRenderHint(QPainter.SmoothPixmapTransform)
 
 
         p.scale(self.scale, self.scale)
         p.scale(self.scale, self.scale)