在WPF上实现从拖动源拖放到鼠标上绘制一条线的方法如下:
下面是一个示例代码,演示如何在WPF上实现从拖动源拖放到鼠标上绘制一条线:
// 在拖动源上注册事件
private void DragSource_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
// 开始拖动操作
DragDrop.DoDragDrop(DragSource, "拖动的数据", DragDropEffects.Copy);
}
private void DragSource_PreviewMouseMove(object sender, MouseEventArgs e)
{
// 检查鼠标左键是否按下,并且拖动操作已经开始
if (e.LeftButton == MouseButtonState.Pressed && DragDrop.PreviewDragOver != null)
{
// 获取鼠标当前位置
Point currentPosition = e.GetPosition(DragSource);
// 找到鼠标下方的元素
var hitResults = VisualTreeHelper.FindElementsInHostCoordinates(currentPosition, DragSource);
// 如果找到了目标元素
if (hitResults.Count > 0)
{
// 创建线条
Line line = new Line();
line.Stroke = Brushes.Black;
line.StrokeThickness = 2;
// 设置线条的起始点和终止点
line.X1 = 0;
line.Y1 = 0;
line.X2 = currentPosition.X;
line.Y2 = currentPosition.Y;
// 将线条添加到目标元素上
UIElement targetElement = hitResults[0] as UIElement;
targetElement.Children.Add(line);
}
}
}
private void DragSource_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
// 结束拖动操作
DragDrop.PreviewDragOver = null;
// 清除绘制的线条
UIElement targetElement = DragSource.Children[0] as UIElement;
targetElement.Children.Clear();
// 执行其他操作
// ...
}
请注意,以上示例代码仅为演示目的,实际应用中可能需要根据具体需求进行适当修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云