none
C#里实现鼠标放到地图的某一个点时,用透明的列表显示这个点的属性信息 RRS feed

  • 问题

  • C#里实现鼠标放到地图的某一个点时,用透明的列表显示这个点的属性信息,这些属性信息存在数据库里可以调出。
    1.需要用到什么事件
    2.透明列表用什么控件
    3.我的开发工具是AE和C#,我想是不是只用C#就可以实现
    2009年6月1日 7:44

答案

  • C#里实现鼠标放到地图的某一个点时,用透明的列表显示这个点的属性信息,这些属性信息存在数据库里可以调出。
    1.需要用到什么事件
    2.透明列表用什么控件
    3.我的开发工具是AE和C#,我想是不是只用C#就可以实现

    可以用PictureBox来放置地图的图片
    然后用MouseHover事件来实现,可以设置MouseHover的停留秒数
    然后通过Control.MousePosition来获取此时鼠标的位置获得一个Point,然后通过此Postion来判断是否等于某个点,或者这个点为圆心的一定半径的圆内或者其他形状内,比如Rectangle.Contains (Point)
    然后从而获得这个形状区域的信息,然后从数据库取得该区域的一些信息,通过透明的Panel来显示其信息吧Panel的位置设置在鼠标悬停的位置
    努力着就不会放弃!.net技术交流群 33083877http://hi.baidu.com/1987raymond
    2009年6月1日 8:41
    版主
  • 1 panel 里面可以放任何你需要的控件  panel是一个容器
    2 我还是建议你直接使用一个新form代替panel  因为form 可以不受父窗体大小的限制 而且可以直接指定透明度

    紫柔版主的头像真叫萌得一个不行啊。。。。
    2009年6月3日 3:14
    版主
  • C#里实现鼠标放到地图的某一个点时,用透明的列表显示这个点的属性信息,这些属性信息存在数据库里可以调出。
    1.需要用到什么事件
    2.透明列表用什么控件
    3.我的开发工具是AE和C#,我想是不是只用C#就可以实现


    这个可以用TOOLTIP控件来说明一下,不过,也为此建立一个SQL2000或者SQL2005的数据库,用于绑定数据库,
    这个个人建议是用DRAW来自己画图,因为这样的话可以调整透明度,
    2009年6月1日 10:39
  • 你好!
         你要将鼠标悬停在哪个控件上就使用哪个控件的MouseHover!
         这个控件提供的经纬度,应该可以和客户区坐标转换的,然后在转成屏幕坐标!
         显示详细信息方式很多,你说的方法都可以的!
        
    周雪峰
    2009年6月3日 4:14
    版主

全部回复

  • C#里实现鼠标放到地图的某一个点时,用透明的列表显示这个点的属性信息,这些属性信息存在数据库里可以调出。
    1.需要用到什么事件
    2.透明列表用什么控件
    3.我的开发工具是AE和C#,我想是不是只用C#就可以实现

    可以用PictureBox来放置地图的图片
    然后用MouseHover事件来实现,可以设置MouseHover的停留秒数
    然后通过Control.MousePosition来获取此时鼠标的位置获得一个Point,然后通过此Postion来判断是否等于某个点,或者这个点为圆心的一定半径的圆内或者其他形状内,比如Rectangle.Contains (Point)
    然后从而获得这个形状区域的信息,然后从数据库取得该区域的一些信息,通过透明的Panel来显示其信息吧Panel的位置设置在鼠标悬停的位置
    努力着就不会放弃!.net技术交流群 33083877http://hi.baidu.com/1987raymond
    2009年6月1日 8:41
    版主
  • C#里实现鼠标放到地图的某一个点时,用透明的列表显示这个点的属性信息,这些属性信息存在数据库里可以调出。
    1.需要用到什么事件
    2.透明列表用什么控件
    3.我的开发工具是AE和C#,我想是不是只用C#就可以实现


    这个可以用TOOLTIP控件来说明一下,不过,也为此建立一个SQL2000或者SQL2005的数据库,用于绑定数据库,
    这个个人建议是用DRAW来自己画图,因为这样的话可以调整透明度,
    2009年6月1日 10:39
  • C#里实现鼠标放到地图的某一个点时,用透明的列表显示这个点的属性信息,这些属性信息存在数据库里可以调出。
    1.需要用到什么事件
    2.透明列表用什么控件
    3.我的开发工具是AE和C#,我想是不是只用C#就可以实现

    2.透明列表用什么控件   个人建议用一个新 form 可以直接透明呵呵
    紫柔版主的头像真叫萌得一个不行啊。。。。
    2009年6月2日 2:46
    版主
  • 谢谢各位!有一点思路了,但还是有很多地方需要再考虑

    首先MouseHover事件是什么控件的MouseHover事件?form的吗?(我的地图是在AE里面的mapcontrol控件里的,mapcontrol控件又放在from里面)

    然后获得点位置的参数是指屏幕位置吧?现在我有的点的位置数据是经纬度

    再有显示属性信息时候用panel?panel不是只是一个组合框么?不用dataGridView吗?
    2009年6月2日 14:29
  • 1 panel 里面可以放任何你需要的控件  panel是一个容器
    2 我还是建议你直接使用一个新form代替panel  因为form 可以不受父窗体大小的限制 而且可以直接指定透明度

    紫柔版主的头像真叫萌得一个不行啊。。。。
    2009年6月3日 3:14
    版主
  • 你好!
         你要将鼠标悬停在哪个控件上就使用哪个控件的MouseHover!
         这个控件提供的经纬度,应该可以和客户区坐标转换的,然后在转成屏幕坐标!
         显示详细信息方式很多,你说的方法都可以的!
        
    周雪峰
    2009年6月3日 4:14
    版主
  • Summarize:
    1.最后用了MapControl控件的OnMouseMove事件
    2.关于透明采取了版主韦恩卑鄙的方案新建一个form,设置属性transparency key为transparent,属性opacity为80%
    3.判断鼠标选中点的函数
     private bool IsInMouseCir(double MouseX, double MouseY, double PointX, double PointY)
            {
                double distance = (MouseX - PointX) * (MouseX - PointX) + (MouseY - PointY) * (MouseY - PointY);
                if (distance < 0.05)
                {
                    return true;
                }
                return false;
            }
    最后再次谢谢大家的帮助~~~~

    2009年6月15日 1:57