Delphi里如何画多边形?

问答知识库用户 |浏览259次
收藏|2014/05/17 22:00
Delphi里如何画多边形?如题

满意回答

2014/05/17 22:00

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;

热心网友

其他回答(0)
0人关注该问题
待解决问题



+1
 加载中...