想实现在axMapControl上绘制多种图形,然后裁剪shp文件(就是框选裁剪shp文件),找到有两种方法,用的时候都遇到了麻烦
现在的问题是绘制图形时遇到了麻烦. axMapControl在主窗体,点击主窗体的控件弹出新窗体,新窗体的内容就是选择任意面,矩形,圆形,
我现在有两种思路:第一种用IGeometry polygon = axMapControl1.TrackPolygon();来实现画面,但是这种方法要把代码放到button下面,绘制面的起点就是button.....如果把代码放到axmapcontrol点击事件里面,要设置一个flag,传到新窗体,点击绘制图形类型的控件时改变flag值,然后再传回主窗体
if (flag == 1)
{
IGeometry polygon = AxMapControl1.TrackPolygon();
}
if (flag == 2)
{
IGeometry polygon = AxMapControl1.TrackPolygon();
}
if (flag == 3)
{
IGeometry polygon = AxMapControl1.TrackPolygon();
}
传到新窗体简单,但是传回去没有实现,并且感觉这样子有点乱.
第二种方法用了自带的工具,主窗体调用新窗体,把axmapcontrol1传到新窗体中,然后用
ControlsNewPolygonTool Cmd = new ControlsNewPolygonTool();
Cmd.OnCreate(AxMapControl1.Object);
AxMapControl1.CurrentTool = Cmd as ITool;
可以画出图形,
但是这种方法画完之后不知道如何获取画完后的图形对象!!!
求帮助啊
我现在有两种思路:第一种用IGeometry polygon = axMapControl1.TrackPolygon();来实现画面,但是这种方法要把代码放到button下面,绘制面的起点就是button.....如果把代码放到axmapcontrol点击事件里面,要设置一个flag,传到新窗体,点击绘制图形类型的控件时改变flag值,然后再传回主窗体
if (flag == 1)
{
IGeometry polygon = AxMapControl1.TrackPolygon();
}
if (flag == 2)
{
IGeometry polygon = AxMapControl1.TrackPolygon();
}
if (flag == 3)
{
IGeometry polygon = AxMapControl1.TrackPolygon();
}
传到新窗体简单,但是传回去没有实现,并且感觉这样子有点乱.
第二种方法用了自带的工具,主窗体调用新窗体,把axmapcontrol1传到新窗体中,然后用
ControlsNewPolygonTool Cmd = new ControlsNewPolygonTool();
Cmd.OnCreate(AxMapControl1.Object);
AxMapControl1.CurrentTool = Cmd as ITool;
可以画出图形,
但是这种方法画完之后不知道如何获取画完后的图形对象!!!
求帮助啊
2 个回复
朱新颖
赞同来自:
自己画的话可以使用IDisplayFeedback或者IRubberBand2.TrackNew
柚子 - ArcGIS/WebAPI
赞同来自:
要回复问题请先登录或注册
发起人
ArcGIS/WebAPI
相关问题
问题状态
—— 扫技术支持中心微信服务号!
—— 让GIS知乎问答随时随地!