ViewportControl Pinch Zoom-Mitte

8

Hej Ich spiele mit einer App für Windows Phone 8, mit MVVM.

Ich habe ein Problem damit, den Mittelpunkt eines Pinch-Zooms zu erfassen und die Grenzen auf dem Viewport-Controller vollständig zu verstehen. Und schließlich die Konfiguration des Viewportscontrollers, um das gesamte Bild zu scrollen. Mein XAML-Code ist:

%Vor%

Soweit ich verstehe, ist die Grenze der Bereich, in dem ich scrollen möchte, und Höhe und Breite ist die Fenstergröße der Steuerung, ist das korrekt?

Antwort Ja, es ist korrekt.

Weiter zum zweiten Teil :) Die Mitte der Pinch-Zoom-Bewegung ermitteln.

%Vor%

Im Fall if (! isZooming) versuche ich das Zentrum zu berechnen. Ich habe auch versucht mit den verschiedenen Zentren, die in der Veranstaltung e gefunden werden können. ohne Erfolg. Was mache ich falsch mit der Berechnung des Zentrums?

Nachdem ich gezoomt habe, kann ich das gesamte Bild nicht mehr schwenken. Ich muss daher einige Variablen ändern, bin aber nicht in der Lage gewesen, sie beim Debuggen oder Durchsuchen des Webs genau zu lokalisieren. Irgendeine Idee dafür?

Antwort Das Bild sollte in der Größe angepasst werden und die Grenzen des Ansichtsfensters sollten auf die neue Größe des skalierten Bilds eingestellt werden.

Bearbeiten Endgültiges Problem ist das Finden des Zentrums und das Problem ist, wenn diese Situation eintritt: da die e.PinchManipulation.Current relativ zu hellblauem Quadrat gibt, und ich möchte es relativ zu dem großen Quadrat, d. h. den Grenzen. Wie geht das?

    
JTIM 21.02.2014, 14:45
quelle

1 Antwort

3

Um dieses Problem zu überwinden, würde ich Folgendes tun. Der Viewportscontroller verfügt über einen Scrollviewer und ein Ansichtsfenster.

Die Grundlagen sind dies:

Während das Bild, das Sie haben, "unzoomed" ist, hat der scrollviewer volle Kontrolle und das ViewportControl tut nichts. Wenn Sie mit dem Pinching beginnen, sperren Sie den Scrollviewer, indem Sie die vertikaleScrollleiste deaktivieren UND das viewport.height = scrollviewer.height einstellen. Dies neutralisiert den Scollviewer. Sie können einen temporären Zoom mit der Image ScaleTransform ausführen. Wenn die Verkleinerung abgeschlossen ist, ändern Sie die Größe des tatsächlichen Bilds so, dass es innerhalb des ViewportControls Platz beansprucht. Mit dem viewportControl können Sie nun das gezoomte Bild mit einem schönen Rücksprung bewegen. Wenn Sie wieder herauszoomen, aktivieren Sie den Scrollviewer erneut. (Stellen Sie die Höhe auf die Bildschirmhöhe ein und aktivieren Sie die Bildlaufleiste.) Zu Ihrer Information, ich vergesse völlig, warum dort eine Leinwand ist, aber ich fühle, dass es wichtig ist. Siehe unten:

Während das folgende Beispiel nicht das macht, was Sie tun möchten, habe ich meinen Code auf dem MediaViewer in diesem Beispiel erstellt und modifiziert: Basic Lens Sample

Allerdings sollte beachtet werden, dass es sich um Bildzoom handelt.

    
JonasN89 04.03.2014, 19:00
quelle