我做电子地图是这么做的,sql存储顶点坐标,落点坐标点的值和该区域的基本信息。然后sql查询就能筛选一个坐标范围。
窗体上拖个pictruebox存放cad图片,用cad图鼠标点击的坐标就可以去查询数据库了。从而模拟了一个电子地图的效果,我从来不用电子地图第三方控件。
第一个过程描坐标:建立数据库表,比如一个长方形区域,起点坐标应该是他左上角,x轴,y轴都是起始位置,落点坐标应该是右下脚,所以在数据库中除了存储这个区域的基本信息外还要存储四个基本值x起始值、x落点、y起始、y落点。
获得这些值不是靠你去计算,必须写一个外挂程序,通过鼠标点击pictruebox捕捉起点和落点坐标,然后分别更新查询到数据表,才能准确地记录每个区域的坐标值。表的格式如下:
区域名称
|
区域基本信息
...|
x起点
|
y起点
|
x落点
|y落点
|
图索引
---------------------------------------------------------------------------------------------
图片a区
|
办公区域
|
80
|
20
|
140
|
50
|
图1
-------------------------------------------------------------------------------------------
......
当基础资料表建立以后,再建立sql视图,用一个鼠标点做条件检索数据库:
假如捕捉点为(x,y),程序中公开两个变量public
int
x,y
select
*
from
基本资料
where
x起点<=x
and
x落点>=x
and
y起点<=y
and
y落点>=y
这样通过pictruebox读取cad图,描坐标的方法就能用图形范围坐标位置检索小范围信息。
你可以通过鼠标点击来完成,也可以通过鼠标双击缩放图形,拖动,使用graph类在上面画图形,遍历数据库,通过区域名称索引也可以,给图片坐标范围着色。
是图片信息信息还是坐标值.坐标值就是鼠标单击事件里写:
string 坐标="( " + e.X.ToString() + " , " + e.Y.ToString() + " )"
如果是图片上信息,那就要查询数据库了.不管用什么办法你先要知道图片中某个点的坐标.
一个点在实际应用中你肯定是肉眼找不到的,所以必须锁定在一个区域范围,可以假设是一个长方形范围为一个点的位置区域,当你鼠标点在长方形区域内任意位置显示这个区域的信息.那就必须要写数据库去查询得到.数据表格式为:
区域信息 | 区域名称| X轴起点坐标 | Y轴起点坐标 | X轴终点坐标 | Y轴终点坐标
------------------------------------------------------------------------------------------------------------------------
.......
这样矩形左上角就可以当成起始坐标,右下脚就可以当作终点坐标.鼠标在程序中点的坐标位置就可以去查数据库了:
Select 区域信息, 区域名称 where X轴起点坐标>='"+e.X+"' and X终点坐标<='"+e.X+"' and Y轴起点坐标>='"+e.Y+"' and Y轴终点坐标<='"+e.Y+"'
用一个文本信息来存储在Tip文本提示事件中或者TextBox 、Label中就读出了鼠标点击地方的信息.
但是建立这个表是有点技术含量的,你不可能拿个本子去抄坐标,那样图片太大的情况下会累死你,而且容易出错.我是这么做的,额外建立两个按钮事件来向表中更新插入图片的起点和终点坐标.不一定要那么十分的准确,大概一个范围内,你点在图片小范围顶点,选个区域名称,按钮1按下更新插入这个位置坐标作为顶点,再去点下区域终点大概位置,按下另一个按钮更新查询插入他的终点.
要这么做的,我是用图片来做电子地图,你如果还看不懂留个邮箱,我发个例子给你看一下.
如果是图形很规则,那倒不必这么去点啊点,计算一下坐标很容易就解决了问题.
如果是电子地图,图形乱七八糟的,有的大有的小,奇形怪状那你就要这么描坐标了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)