Bonjour

je peux zoomer et "Translater (Pan)" les objets graphiques contenus dans mon ZoomPanCanvas, sauf que c'est tout le canvas qui Zoom ou bouge.
comment avoir une sorte de Canvas constant ou "infini".?
voici des paertie de mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
private TranslateTransform _pan = new TranslateTransform();
 
        public ZoomPanCanvas()
        {
            this.RenderTransform = _pan;
            this.MouseWheel += ZoomPanCanvas_MouseWheel;
            this.MouseLeftButtonDown += ZoomPanCanvas_MouseLeftButtonDown;
            this.MouseMove += ZoomPanCanvas_MouseMove;
            this.MouseLeftButtonUp += ZoomPanCanvas_MouseLeftButtonUp;
        }
les events :
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 
 
 
        private void ZoomPanCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            this.Cursor = Cursors.Hand;
            dragStartPoint = e.GetPosition(this);
        }
 
 
        private void ZoomPanCanvas_MouseMove(object sender, MouseEventArgs e)
        {
 
 
 
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                Point point = e.GetPosition(this);
 
 
                _pan.X += point.X - dragStartPoint.Value.X;
                _pan.Y += point.Y - dragStartPoint.Value.Y;
 
 
                dragStartPoint = point;
 
 
            }
        }
 
 
 
        private void ZoomPanCanvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
 
            this.Cursor = Cursors.Arrow;
            dragStartPoint = null;
        }
 
        private void ZoomPanCanvas_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            Point position = e.GetPosition(this);
 
             scale *= e.Delta > 0 ? 1.1 : (1.0 / 1.1);
 
            this.transform.ScaleAt(scale, scale, position.X, position.Y);
            this.RenderTransform = new MatrixTransform(this.transform);
 
 
 
 
        }
Merci