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