WPF中如何将Canvas里面的图片和ListBox里面的图片实现互相拖拽,并且拖拽后减少相应的图片
WPF中如何将Canvas里面的图片和ListBox里面的图片实现互相拖拽,并且拖拽后减少相应的图片?例图如下:
图1-1 --------------------编程问答-------------------- 哦,我也不知道。 --------------------编程问答-------------------- 哥们! 不解决问题就算了! 别捣乱行吗? --------------------编程问答-------------------- #region 对于拖动事件的处理
private void c_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
try
{
dragging = true;//标记鼠标按下
mousePoint = e.GetPosition(this.c);//获取鼠标在但前canvas内的位置
mouseCtrl = (Control)e.Source; //获得事件触发的源,即哪个控件
VisualBrush v;
v = new VisualBrush(mouseCtrl);//利用VisualBrush得到控件的影像
shadow.Width = mouseCtrl.Width;
shadow.Height = mouseCtrl.Height;
shadow.Fill = v;//将影像填充给矩形
Canvas.SetLeft(shadow, Canvas.GetLeft(mouseCtrl));
Canvas.SetTop(shadow, Canvas.GetTop(mouseCtrl));
shadow.Visibility = Visibility.Visible;//使矩形可见
//Canvas.SetZIndex(shadow, 0);//可以通过SetZIndex设置阴影的z方向位置
c.CaptureMouse();//强制捕获鼠标。这在对于背景透明的窗体里面是必须的
}
catch
{
}
}
}
private void c_MouseMove(object sender, MouseEventArgs e)
{
if (dragging)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
Point theMousePoint = e.GetPosition(this.c);
Canvas.SetLeft(shadow, theMousePoint.X - (mousePoint.X - Canvas.GetLeft(shadow)));
Canvas.SetTop(shadow, theMousePoint.Y - (mousePoint.Y - Canvas.GetTop(shadow)));//简单的计算,只移动shadow
mousePoint = theMousePoint;
}
}
}
private void c_MouseUp(object sender, MouseButtonEventArgs e)
{
try
{
dragging = false;
Mouse.Capture(null);//取消强制捕获
shadow.Visibility = Visibility.Hidden;//隐藏shadow
Canvas.SetLeft(mouseCtrl, Canvas.GetLeft(shadow));
Canvas.SetTop(mouseCtrl, Canvas.GetTop(shadow));//将控件放到新的位置
}
catch
{
}
doarrow();
}
#endregion
图片的减少就由你自己来控制了 --------------------编程问答-------------------- 从listBox 控件里面拖出来的图片!要自动减少! --------------------编程问答-------------------- Use MVVM pattern. Don't use too much code-behind. --------------------编程问答-------------------- 做的好
补充:.NET技术 , .NET技术前瞻