C#.codebox 5: WPF – How to drag an Image with the mouse?

Filed under C\C++\C#, How to?, Programming, Source code
Tagged as , , , , , ,

C#.codebox 5

WPF – How to drag an Image with the mouse?

The code below was used in ShortcutMan.G 3.0 to drag an image around the window (a TabItem in this case) with the mouse.
The image is contained within a Canvas which is contained within a TabItem.

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
53
54
55
56
57
58
59
60
61
62
63
64
        Image myImage = null; //selected image
        Boolean MouseIsDown = false; //mouse down state
 
        //Left button down - when the mouse button is down in the image
        void Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            myImage = (Image)sender;
 
            if (e.ClickCount == 1) //if one click
            {
                //Drag image
                TabItem Tab = (TabItem)TabControl1.SelectedItem;
                Canvas TabCanvas = (Canvas)Tab.Content;
 
                ////Get mouse coordinates and center the cursor in the image (optional)
                Point mouseCoordinates = new Point(e.GetPosition(TabCanvas).X, e.GetPosition(TabCanvas).Y);
                Canvas.SetLeft(myImage, mouseCoordinates.X - (myImage.Width / 2));
                Canvas.SetTop(myImage, mouseCoordinates.Y - (myImage.Height / 2));
 
                //Update mouse state
                MouseIsDown = true;
            }
        }
 
        //Left button up - when the mouse button goes up
        void Image_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            //Update mouse state
            MouseIsDown = false;
        }
 
        //Mouse leave - when the mouse button leaves the image
        void Image_MouseLeave(object sender, MouseEventArgs e)
        {
            //Update mouse state
            MouseIsDown = false;
        }
 
        //Mouse move - when the mouse moves
        void Image_MouseMove(object sender, MouseEventArgs e)
        {
            if (myImage != null && MouseIsDown) //if there's an image selected and if mouse is down
            {
                TabItem Tab = (TabItem)TabControl1.SelectedItem;
                Canvas TabCanvas = (Canvas)Tab.Content;
 
                //Get mouse coordinates
                Point mouseCoordinates = new Point(e.GetPosition(TabCanvas).X, e.GetPosition(TabCanvas).Y);
 
                //Set limits - the limits within the tab (optional)
                if (mouseCoordinates.X < 0)
                    mouseCoordinates.X = 0;
                if (mouseCoordinates.Y < 0)
                    mouseCoordinates.Y = 0;
                if (mouseCoordinates.X > TabCanvas.Width)
                    mouseCoordinates.X = TabCanvas.Width;
                if (mouseCoordinates.Y > TabCanvas.Height)
                    mouseCoordinates.Y = TabCanvas.Height;
 
                //Update image location
                Canvas.SetLeft(myImage, mouseCoordinates.X - (myImage.Width / 2));
                Canvas.SetTop(myImage, mouseCoordinates.Y - (myImage.Height / 2));
            }
        }

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*