| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5979 人关注过本帖
标题:怎么在窗口中让picturebox可以用鼠标移动?
只看楼主 加入收藏
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:14 
怎么在窗口中让picturebox可以用鼠标移动?
如题,希望高手来解答
搜索更多相关主题的帖子: 鼠标 窗口 picturebox 
2009-09-17 11:37
jockey
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:977
专家分:52
注 册:2005-12-4
收藏
得分:0 
  private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            pictureBox1.Location = new Point(MousePosition.X,MousePosition.Y); //X,Y根据需要 + -
        }

2009-09-17 12:19
baikil
Rank: 10Rank: 10Rank: 10
来 自:X星球
等 级:青峰侠
威 望:4
帖 子:282
专家分:1580
注 册:2009-7-20
收藏
得分:0 

鼠标有的位置对于不同的坐标系中有不同的值,
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)  
中的e.X为控件自身的一个坐标系,
MousePosition 所指的不屏幕中的坐标位置,
要在同一个坐标系下计算位移.
通过SetBounds来设置位置与大小,
如果单一为位置可以用Location来设置.


自创QQ群64885635,方便C#学习交流.希望各项工作路好学都好入!
2009-09-17 13:08
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
收藏
得分:0 
回复 3楼 baikil
哥们能说具体点吗?
图片的location都是相对容器的位置
而鼠标的位置是相对屏幕的,
所以移动时候会有一段位移偏差
要用什么方法来解决
最笨的方法就是把容器的location传进picturebox(我做的是单独组件)
当容器本身又是其他控件的子控件时候会变得非常麻烦
所以能不能有方法得到容器的绝对位置?
或者鼠标相对容器的位置?

天涯无岁月,歧路有风尘,百年浑似醉,是非一片云
2009-09-17 13:38
baikil
Rank: 10Rank: 10Rank: 10
来 自:X星球
等 级:青峰侠
威 望:4
帖 子:282
专家分:1580
注 册:2009-7-20
收藏
得分:0 
只要在相同的坐标系下计算才是一个有效的值.
控件在与鼠标走,就是说鼠标相对控件为静止的.
而鼠标在屏中是移动的,
控件在屏幕中也是移动的,
鼠标移动的相对位移与控件相等.
基本如下:
1.计录鼠标开始移动的位置(屏幕坐标系)x1=MousePosition.x,y1=MousePosition.y
2.计录控件开始移动的位置(容器坐标系)x2=pictureBox1.location.x,y2=pictureBox1.location.y
3.计录鼠标在屏幕中移动的位移(dx=x1-MousePosition.x, dy=y1-MousePosition.y)
4.对控件的平移 pictureBox1.Location=new point(x2+dx,y2+dy);
完成
详细代码顺着写一下就行了.

自创QQ群64885635,方便C#学习交流.希望各项工作路好学都好入!
2009-09-17 22:49
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
收藏
得分:0 
怎么移动图片飞走了呢
movepicture.rar (32.65 KB)

天涯无岁月,歧路有风尘,百年浑似醉,是非一片云
2009-09-18 10:46
baikil
Rank: 10Rank: 10Rank: 10
来 自:X星球
等 级:青峰侠
威 望:4
帖 子:282
专家分:1580
注 册:2009-7-20
收藏
得分:20 
呵呵,坐标系弄错了吧

movepicture.rar (32.71 KB)

自创QQ群64885635,方便C#学习交流.希望各项工作路好学都好入!
2009-09-18 11:52
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
收藏
得分:0 
是位移方向弄反了,晕

天涯无岁月,歧路有风尘,百年浑似醉,是非一片云
2009-09-18 13:38
athenalux
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河北石家庄
等 级:小飞侠
威 望:8
帖 子:975
专家分:2514
注 册:2008-11-26
收藏
得分:0 
嗯,不错啊,原来一直用 picturebox1.location=new point(e.x,e.y);这样,一直不太行,原来要像楼上这样!!

QQ:81704464
2009-09-18 13:58
snowprince
Rank: 2
来 自:武汉
等 级:论坛游民
帖 子:108
专家分:48
注 册:2009-5-1
收藏
得分:0 
学习啦
2009-09-21 21:11
快速回复:怎么在窗口中让picturebox可以用鼠标移动?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038252 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved