Advertisement
Guest User

attempted zoom anchoring

a guest
Jan 5th, 2014
613
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.12 KB | None | 0 0
  1. from PyQt4 import QtCore, QtGui
  2. import sys
  3.  
  4. class Annotator(QtGui.QWidget):
  5.     def __init__(self):
  6.         QtGui.QWidget.__init__(self)
  7.  
  8.         self.image = None
  9.         self.scale = 1.0
  10.         self.position = (100, 100)
  11.  
  12.         self.pressed = None
  13.         self.anchor = None
  14.  
  15.         self.load('example.jpg') #############
  16.  
  17.     def load(self, filename):
  18.         self.image = QtGui.QImage(filename)
  19.  
  20.     def mousePressEvent(self, event):
  21.         print 'PRESSED : ',event.pos()
  22.         self.pressed = event.pos()
  23.         self.anchor = self.position
  24.  
  25.     def mouseReleaseEvent(self, event):
  26.         self.pressed = None
  27.  
  28.     def mouseMoveEvent(self, event):
  29.         if (self.pressed):
  30.             dx, dy = event.x() - self.pressed.x(), event.y() - self.pressed.y()
  31.             self.position = (self.anchor[0] - dx, self.anchor[1] - dy)
  32.         self.repaint()
  33.  
  34.     def wheelEvent(self, event):
  35.         oldscale = self.scale
  36.         self.scale += event.delta() / 1200.0
  37.         if (self.scale < 0.1):
  38.             self.scale = oldscale
  39.  
  40.         "unsuccessfully anchors mouse point"
  41.         oldpoint = self.mapFromGlobal(QtGui.QCursor.pos())
  42.         dx, dy = oldpoint.x() - self.position[0], oldpoint.y() - self.position[1]
  43.         newpoint = (oldpoint.x() * (self.scale/oldscale),
  44.                     oldpoint.y() * (self.scale/oldscale))
  45.         self.position = (newpoint[0] - dx, newpoint[1] - dy)
  46.        
  47.         "successfully anchors top left point"
  48.         #self.position = (self.position[0] * (self.scale / oldscale),
  49.         #                 self.position[1] * (self.scale / oldscale))
  50.  
  51.        
  52.         self.repaint()
  53.  
  54.     def paintEvent(self, event):
  55.         painter = QtGui.QPainter()
  56.         painter.begin(self)
  57.  
  58.         painter.drawImage(0, 0,
  59.             self.image.scaled(
  60.                 self.image.width() * self.scale,
  61.                 self.image.height() * self.scale,
  62.                 QtCore.Qt.KeepAspectRatio),
  63.             self.position[0], self.position[1])
  64.  
  65.         painter.end()
  66.  
  67. app = QtGui.QApplication(sys.argv)
  68. annotator = Annotator()
  69. annotator.show()
  70. sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement