代码名称:画多边形,画线

作者/收集者:zwlxuezi

开发环境:Delphi + MapX

代码:

 

1,画多边形,画线
procedure TForm1.Map1PolyToolUsed(Sender: TObject;  ToolNum: Smallint; Flags: Integer; const Points: IDispatch; 
     bShift, bCtrl: WordBool; var EnableDefault: WordBool);
 var
 Style: CMapXStyle;
 f: CMapXFeature;
 begin
 case Flags of
 miPolyToolBegin: ;{ 某些用户开始使用 PolyTool.. }
 miPolyToolEnd:
 { 用户通过双击完成 PolyTool 的使用 }
 if ToolNum = MY_POLYGON_TOOL then
 begin
 { 它们使用 MY_POLYGON_TOOL!制作新的区域图元  并将其添加到第一个图层 }
 Style := Map1.DefaultStyle.Clone;

 Style.RegionPattern := miPatternSolid;
 Style.RegionColor := 255;
 Style.RegionBorderColor := 0;
 Style.RegionBorderWidth := 2;
 Style.RegionBorderStyle := 1;
 { 使用由事件为我提供的点。    MapX 自动关闭打开的多边形,因此我无    需担心! }
 f := Map1.FeatureFactory.CreateRegion(Points, Style);
 Map1.Layers.Item('Temp Layer').AddFeature(f, EmptyParam);
 end
 else if ToolNum = MY_POLYLINE_TOOL then
 begin
 { 它们使用 MY_ POLYLINE_TOOL!制作新的线图元  并将其添加到第一个图层 }

 Style := Map1.DefaultStyle.Clone;
 Style.LineStyle := 1;
 Style.LineColor := 255;
 Style.LineWidth := 2;
 { 使用由事件为我提供的点  }
 f := Map1.FeatureFactory.CreateLine(Points, Style);
 Map1.Layers.Item('Temp Layer').AddFeature(f, EmptyParam);
 end;
 miPolyToolEndEscaped: ; { 用户按下了 Esc 或退格键 删除所有节点... 不要再添加任何东西。 }
 end;
 end; 
//////////////////////////////
2.画折线和多边形(并没有考虑属性数据的录入)
procedure TForm1.Map1PolyToolUsed(Sender: TObject;  ToolNum: Smallint; Flags: Integer; const Points: IDispatch; 
      bShift, bCtrl: WordBool; var EnableDefault: WordBool);
 var
 Style: CMapXStyle;
 f: CMapXFeature;
 begin
 case Flags of
 miPolyToolBegin: ;{ 某些用户开始使用 PolyTool.. }
 miPolyToolEnd:
 { 用户通过双击完成 PolyTool 的使用 }
 if ToolNum = MY_POLYGON_TOOL then
 begin
 { 它们使用 MY_POLYGON_TOOL!制作新的区域图元  并将其添加到第一个图层 }
 Style := Map1.DefaultStyle.Clone;

 Style.RegionPattern := miPatternSolid;
 Style.RegionColor := 255;
 Style.RegionBorderColor := 0;
 Style.RegionBorderWidth := 2;
 Style.RegionBorderStyle := 1;
 { 使用由事件为我提供的点。    MapX 自动关闭打开的多边形,因此我无    需担心! }
 f := Map1.FeatureFactory.CreateRegion(Points, Style);
 Map1.Layers.Item('Temp Layer').AddFeature(f, EmptyParam);
 end
 else if ToolNum = MY_POLYLINE_TOOL then
 begin
 { 它们使用 MY_ POLYLINE_TOOL!制作新的线图元  并将其添加到第一个图层 }

 Style := Map1.DefaultStyle.Clone;
 Style.LineStyle := 1;
 Style.LineColor := 255;
 Style.LineWidth := 2;
 { 使用由事件为我提供的点  }
 f := Map1.FeatureFactory.CreateLine(Points, Style);
 Map1.Layers.Item('Temp Layer').AddFeature(f, EmptyParam);
 end;
 miPolyToolEndEscaped: ; { 用户按下了 Esc 或退格键 删除所有节点... 不要再添加任何东西。 }
 end;
 end;