프로젝트

일반

사용자정보

개정판 96b1429e

ID96b1429ed78d398f9054930b663fba2990694124
상위 20f78f16
하위 52ea09ee

백흠경이(가) 약 5년 전에 추가함

issue #1048: improve zoom in/out function

Change-Id: I181b084cbae32978bcdefda9ffb923aa197d384f

차이점 보기:

HYTOS/HYTOS/QtImageViewer.py
237 237
        @history    18.04.11    Jeongwoo    add parameter 'adjust' (@ref ResultTreeWidget.itemClickEvent(self, item, columnNo))
238 238
    '''
239 239
    def zoomImage(self, isZoomIn, event, adjust = 1):
240
        """ Zoom in & out
241
        """
240
        """Zoom in & out"""
242 241

  
243 242
        HALF_SIZE = 300
244 243
        clickPos = event.pos()
......
246 245
        scenePos2 = self.mapToScene(clickPos.x() + HALF_SIZE//adjust, clickPos.y() + HALF_SIZE//adjust)
247 246
        if isZoomIn:
248 247
            zoomArea = QRectF(QPointF(scenePos1.x() if scenePos1.x() > 0 else 0, scenePos1.y() if scenePos1.y() > 0 else 0), QPointF(scenePos2.x(), scenePos2.y()))
249
            #self.fitInView(zoomArea, Qt.KeepAspectRatioByExpanding)
250 248
            viewBBox = self.zoomStack[-1] if len(self.zoomStack) else self.sceneRect()
251 249
            selectionBBox = zoomArea.intersected(viewBBox)
252 250
            self.scene.setSelectionArea(QPainterPath())  # Clear current selection area.
253
            if selectionBBox.width() > HALF_SIZE*2 and selectionBBox.height() > HALF_SIZE*2:
254
                if selectionBBox.isValid() and (selectionBBox != viewBBox):
255
                    self.zoomStack.append(selectionBBox)
256
                    self.updateViewer()
251
            if selectionBBox.isValid() and (selectionBBox != viewBBox):
252
                self.zoomStack.append(selectionBBox)
253
                self.updateViewer()
257 254
        else:
258 255
            zoomNewRect = None
259 256
            self.scene.setSelectionArea(QPainterPath())  # Clear current selection area.
260 257
            if len(self.zoomStack):
261
                self.zoomStack.pop()
262
            if len(self.zoomStack):
263
                newScenePos = self.mapToScene(clickPos.x(), clickPos.y())
264
                newPosX1 = newScenePos.x() - self.zoomStack[-1].width() / 2
265
                newPosY1 = newScenePos.y() - self.zoomStack[-1].height() / 2
266
                zoomNewPos1 = QPointF(newPosX1 if newPosX1 > 0 else 0, newPosY1 if newPosY1 > 0 else 0)
267
                newPosX2 = newScenePos.x() + self.zoomStack[-1].width() / 2
268
                newPosY2 = newScenePos.y() + self.zoomStack[-1].width() / 2
269
                zoomNewPos2 = QPointF(newPosX2, newPosY2)
270
                zoomNewRect = QRectF(zoomNewPos1, zoomNewPos2)
258
                zoomNewRect = self.zoomStack.pop()
271 259
            self.updateViewer(zoomNewRect)
272 260

  
273 261
    def resizeEvent(self, event):
274
        """ Maintain current zoom on resize.
275
        """
262
        """ Maintain current zoom on resize. """
276 263
        self.updateViewer()
277 264

  
278 265
    '''
......
383 370
    '''
384 371
    def wheelEvent(self, event):
385 372
        if event.modifiers() == Qt.ControlModifier:
386
            if self.canZoom and self.hasImage():
373
            if self.canZoom:
387 374
                numDegrees = event.angleDelta() / 8
388 375
                if numDegrees is not None:
389 376
                    if numDegrees.y() > 0:

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)