private void AddButtonClick(object sender, RoutedEventArgs e) { var dialog = new Microsoft.Win32.OpenFileDialog(); dialog.Filter = "Image Files (*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp"; if ((bool)dialog.ShowDialog()) { var bitmap = new BitmapImage(new Uri(dialog.FileName)); var image = new Image { Source = bitmap }; Canvas.SetLeft(image, 0); Canvas.SetTop(image, 0); canvas.Children.Add(image); } } private Image draggedImage; private Point mousePosition; private void CanvasMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { var image = e.Source as Image; if (image != null && canvas.CaptureMouse()) { mousePosition = e.GetPosition(canvas); draggedImage = image; Panel.SetZIndex(draggedImage, 1); // in case of multiple images } } private void CanvasMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { if (draggedImage != null) { canvas.ReleaseMouseCapture(); Panel.SetZIndex(draggedImage, 0); draggedImage = null; } } private void CanvasMouseMove(object sender, MouseEventArgs e) { if (draggedImage != null) { var position = e.GetPosition(canvas); var offset = position - mousePosition; mousePosition = position; Canvas.SetLeft(draggedImage, Canvas.GetLeft(draggedImage) + offset.X); Canvas.SetTop(draggedImage, Canvas.GetTop(draggedImage) + offset.Y); } }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)