首页 新闻 赞助 找找看

关于 C#不规则窗体移动时坐标的转成屏幕坐标

0
悬赏园豆:30 [已解决问题] 解决于 2015-07-21 23:06

小弟最近在学习些 创建不规则窗体,参考了某培训机构的文章 http://www.ft77.net/cjc/424.html ,
但是有一点不明白,就是鼠标按下时的坐标要转换成负数,具体请看下面的:

================================================================================

创建窗体的MouseDown事件的事件处理函数。为该事件添加代码后,用户就可以在任何位置移动窗体了。代码如下:   
private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)  
{  
  //为什么这里的坐标要转换成付的?????????????
  mouse_offset = new Point(-e.X, -e.Y);

}  
=================================================================================
麻烦了,谢谢

C#
小吴99的主页 小吴99 | 初学一级 | 园豆:113
提问于:2012-07-07 07:57
< >
分享
最佳答案
0

只是记录一个偏移而已,正负取决于你后面计算时如何使用。你要愿意,也可以不用写成负数。

收获园豆:30
I,Robot | 大侠五级 |园豆:9783 | 2012-07-09 03:04

但是,如果不是负数的话就会造成偏移

小吴99 | 园豆:113 (初学一级) | 2012-07-10 21:00

@小吴99: 

没看你具体的代码,但是可以猜到后面的代码应该类似于

this.Top += e.X + mouse_offset.X;

this.Left += e.Y + mouse_Offset.Y;

 

如果不用负数则计算方式改成如下

this.Top += e.X - mouse_offset.X;

this.Left += e.Y - mouse_Offset.Y;

I,Robot | 园豆:9783 (大侠五级) | 2012-07-12 13:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册