Seite 1 von 1

Zoom auf Mousezeiger

Verfasst: 2. Juni 2010 13:17
von abcmann74
Hi

ich habe eine GraphicsScene und ein GraphicsView. Zoomen kann ich über das Mausrad mittels der scale() Funktion.
Ich will nun versuchen genau auf die aktuelle Mausposition zu zoomen.

Ich habe schonmal daran gedacht den Anzeigebereich der Scene so zu verschieben, dass die Mausposition immer das Center des Rechtecks ist. Aber damit bin ich irgendwie nicht weit gekommen...

Hat da jemand vllt. noch eine Idee wie ich das sonst noch umsetzen kann?

grüße

Verfasst: 2. Juni 2010 16:49
von upsala
Ungefähr so könnte es funktionieren:
translate(-pos)
scale()
translate(+pos)

Verfasst: 2. Juni 2010 23:28
von otternase
könntest Du eventuell das hier suchen?

void QGraphicsView::setTransformationAnchor ( ViewportAnchor anchor )

mit anchor = QGraphicsView::AnchorUnderMouse

Verfasst: 3. Juni 2010 09:34
von abcmann74
danke euch beiden. habe es jetzt so gelöst.

Code: Alles auswählen

void ImageWindow::ZoomIn()
{
  View_->centerOn (CurrentMousePosition_.x(), CurrentMousePosition_.y());
  ScaleImage(1.25);
}
grüße