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.