Hello les gens ^^
Je n'arrive pas à zoomer et dézoomer sur la position de mon pointeur, j'ai essayer plusieurs méthodes mais aucunes n'a fonctionnée ..
Le besoin est lorsque j'effectue un coup de roulette dans mon canvas, ma ViewBox (contenue dans un ScrollViewer) s'ajuste afin de se centrer sur le pointeur et l'inverse lorsque je met un coup de roulette dans l'autre sens. A savoir que mon zoom fonctionne très bien sinon ^^ .
Please Help
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 private void WorkSpace_PreviewMouseWheel(object sender, MouseWheelEventArgs e) { //Récupération position souris lastMousePos = Mouse.GetPosition(MyCanvas); // Sauvegarde position souris actuelle lastMousePos.X = lastMousePos.X - scrViewer.HorizontalOffset; lastMousePos.Y = lastMousePos.Y - scrViewer.VerticalOffset; // Application du zoom if (e.Delta > 0) { double Zoom = ZoomSlider.Value; double CenterX = this.ActualWidth / 2; //Centre du canvas en X double CenterY = this.ActualHeight / 2; //Centre du canvas en Y scrViewer.ScrollToHorizontalOffset(lastMousePos.X + CenterX); scrViewer.ScrollToVerticalOffset(lastMousePos.Y + CenterY); //double scrV_H = double.Parse(scrViewer.HorizontalAlignment.ToString()); //double scrV_V = double.Parse(scrViewer.VerticalAlignment.ToString()); ZoomSlider.Value *= PasZoom;// += OFFSET_ZOOM; //scrViewer.HorizontalContentAlignment = CenterX - lastMousePos.X; //scrViewer.Height = CenterY - lastMousePos.Y; //scrViewer.HorizontalAlignment = lastMousePos.X; //scrViewer.VerticalAlignment = lastMousePos.Y; } else { ZoomSlider.Value /= PasZoom;//-= OFFSET_ZOOM; } }
Partager