Laden...

WPF Bewegen und Zoomen nicht synchron

Erstellt von Boesling vor 5 Jahren Letzter Beitrag vor 5 Jahren 722 Views
B
Boesling Themenstarter:in
4 Beiträge seit 2018
vor 5 Jahren
WPF Bewegen und Zoomen nicht synchron

Hallo Forum,
ich arbeite an einer GUI zum Darstellen verschiedener Controls (Hintergrundbild und eigene Controls) in einem Canvas eingebettet in einer Viewbox. Ziel ist es, die ganze canvas inkl. der controls mit Mouse und Touch verschieben und zoomen zu können. Das funktioniert soweit gut, mit der Ausnahme, dass bei großen Hintergrundbildern der "Verschiebeweg" auf dem Bildschirm nicht synchron zum canvas ist. Ich habe schon versucht mit TranslatePoint einen Faktor, abhängig vom Zoom zu berechnen um die Bewegung anzupassen. Leider brachte das nur geringen Erfolg.
Habt ihr eine Idee / Lösung dafür?


<Viewbox x:Name="ViewBox1" Grid.Row="0" Grid.Column="1" IsManipulationEnabled="True" MouseWheel="CanWindow1_MouseWheel" MouseLeftButtonDown="CanWindow1_MouseLeftButtonDown" MouseLeftButtonUp="CanWindow1_MouseLeftButtonUp" MouseMove="CanWindow1_MouseMove" TouchDown="CanWindow1_TouchDown" TouchUp="CanWindow1_TouchUp">
       <Canvas x:Name="CanWindow1">
                       <Image x:Name="Img1" Source="c:\users\dhueb\documents\visual studio 2017\Projects\GUI_Test_SC200\GUI_Test_SC200\Resources\DSC_6214.JPG"/>
      </Canvas>
</Viewbox>


            Point point0 = ViewBox1.TranslatePoint(p0, CanWindow1);
            Point point1 = ViewBox1.TranslatePoint(p1, CanWindow1);

            zoom = 1.3 * ((point1.X - point0.X) / p1.X);
...
            rectsMatrix.Translate(moveX, moveY);
            rectToMove.RenderTransform = new MatrixTransform(rectsMatrix);

Danke sehr.