当前位置:编程学习 > C#/ASP.NET >>

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技术前瞻
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,