首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# Winform Panel 拖动图片到Panel外,该如何处理

2013-12-21 
C# Winform Panel 拖动图片到Panel外在C#的Winform中放一个panel;在Panel中动态生成图片;想要把图片拖出Pa

C# Winform Panel 拖动图片到Panel外
在C#的Winform中放一个panel;
在Panel中动态生成图片;
想要把图片拖出Panel外,且图片跟着鼠标移动;
利用MouseDown,MouseMove,MouseUp对图片进行拖动;
但不管怎么拖动图片,图片都不能离开Panel
跪求各位大师给个建议吧

 
Point p = new Point();
        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            p.X = e.Location.X;
            p.Y = e.Location.Y;
            pictureBox1.MouseMove +=pictureBox1_MouseMove;
        }

        private void pictureBox1_MouseMove(object sender ,MouseEventArgs e) 
        {
            pictureBox1.Location = new Point(pictureBox1.Location.X + e.Location.X - p.X, pictureBox1.Location.Y + e.Location.Y - p.Y);
            pictureBox1.MouseUp += pictureBox1_MouseUp;
        }

        private  void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            pictureBox1.Location = new Point(p.X, p.Y);
            pictureBox1.MouseMove -= pictureBox1_MouseMove;
        }
C#? Winform ?Panel? 拖动图片
[解决办法]
使用Drag 和DropDown试试吧,将图片移动出去,相当于将图片从panel中删除,放到其他panel中,或者其他地方
[解决办法]
想要把图片拖出Panel外,且图片跟着鼠标移动,请在鼠标移出Panel时,设置pictureBox.Parent为移入的容器
[解决办法]
                Rectangle r1 = panel1.Bounds;
                Rectangle r2 = new Rectangle(panel1.Bounds.X + pictureBox1.Bounds.X, panel1.Bounds.Y + pictureBox1.Bounds.Y, pictureBox1.Bounds.Width, 
                if (!r1.Contains(r2))
                {
                    pictureBox1.Parent = this;
                }
                else
                {
                    pictureBox1.Parent = panel1;
                }

在MouseMove里加上面的代码判断picturebox是否超出panel,r1,r2定义成全局变量,当移出去的时候,把被遮挡的部分用panel1.CreaeGraphics.DrawImage画到panel上

热点排行