[WPF / C #] Drag and drop Image control

Original: [WPF / C #] Drag and drop Image control

Requirements: Make the Image control can be dragged.

Idea: The key is to rewrite several mouse events of the Image control to achieve control.

Front desk:

<Image 
    Source="C:\Users\Administrator\Documents\Visual Studio 2015\Projects\WpfApplication1\WpfApplication1\Resources\Images\Application.ico"
    MouseLeftButtonUp="Image_MouseLeftButtonUp" 
    MouseLeftButtonDown="Image_MouseLeftButtonDown" 
    MouseMove="Image_MouseMove"/>

Backstage:

private void Image_MouseMove(object sender, MouseEventArgs e)
{
    if (isDown)
    {
        Image image = e.Source as Image;
        // 因为Image图片的原点位于它的左上角而非中心点,所以还需要减去自身宽高的一半
        Canvas.SetLeft(image, e.GetPosition(canvas).X - image.ActualWidth/2);
        Canvas.SetTop(image, e.GetPosition(canvas).Y - image.ActualHeight/2);
    }
}

private void Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    isDown = true;
}

private void Image_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    isDown = false;
}

Guess you like

Origin www.cnblogs.com/lonelyxmas/p/12741791.html