csharp 在c#中拖动wpf画布上的元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 在c#中拖动wpf画布上的元素相关的知识,希望对你有一定的参考价值。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;

namespace TrackerTester.app.shared.drawing_surface.drawing_layer.drag_elem
{
    public class DragElem
    {
        public DragElem(Canvas c, UIElement e)
        {
            Nullable<Point> dragStart = null;

            MouseButtonEventHandler mouseDown = (sender, args) =>
            {
                var element = (UIElement)sender;
                dragStart = args.GetPosition(element);
                element.CaptureMouse();
            };
            MouseButtonEventHandler mouseUp = (sender, args) =>
            {
                var element = (UIElement)sender;
                dragStart = null;
                element.ReleaseMouseCapture();
            };
            MouseEventHandler mouseMove = (sender, args) =>
            {
                if (dragStart != null && args.LeftButton == MouseButtonState.Pressed)
                {
                    var element = (UIElement)sender;
                    var p2 = args.GetPosition(c);
                    Canvas.SetLeft(element, p2.X - dragStart.Value.X);
                    Canvas.SetTop(element, p2.Y - dragStart.Value.Y);
                }
            };
            Action<UIElement> enableDrag = (element) =>
            {
                element.MouseDown += mouseDown;
                element.MouseMove += mouseMove;
                element.MouseUp += mouseUp;
            };
            enableDrag(e);
        }



    }
}

以上是关于csharp 在c#中拖动wpf画布上的元素的主要内容,如果未能解决你的问题,请参考以下文章

在 WPF 中更改画布的坐标系

如何在画布内拖动用户控件

只需要一些关于画布上动态可拖动输入元素的指导

可拖动图像上的画布绘图

WPF C#如何使用鼠标使控件可拖动

如何使用 C# 在画布上的 WPF 中绘制透明 PNG