代码如下(直接复制到一个地图窗口下即可运行):
Option Explicit
'//圆周率"派"值
Const PI As Single = 3.1415926
Private Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'//鼠标绘制圆形
Dim crl As New MapObjects2.Ellipse
Set crl = Map1.TrackCircle
'//将圆形转化为多边形
Dim pgn As New MapObjects2.Polygon
Set pgn = ChangeCircleToPolygon(crl)
'//闪烁多边形
Map1.FlashShape pgn, 2
End Sub
'*******************************************************************************
'【名 称】:ChangeCircleToPolygon()
'【功 能】:将圆形对象转化为多边形对象
'【参 数】:crl : 圆形对象
' Sect : 转化后的多边形边数
'【返回值】:新的MO多边形对象
'******************************************************************************
Public Function ChangeCircleToPolygon(crl As MapObjects2.Ellipse, Optional Sect As Integer = 40) As MapObjects2.Polygon
'//获得圆心
Dim CPt As New MapObjects2.Point
Set CPt = crl.Center
'//获得圆心坐标
Dim Cx As Double: Dim Cy As Double
Cx = CPt.X: Cy = CPt.Y
'//获得半径
Dim rds As Double
rds = crl.Width / 2
'//获得等边多边形每一边所对应的夹角
Dim cnr As Double
cnr = PI * 2 / Sect
'//生成新的多边形对象
Dim pnt As New MapObjects2.Point: Dim pnts As New MapObjects2.Points
Dim X As Double: Dim Y As Double
Dim pgn As New MapObjects2.Polygon
Dim i As Integer
For i = 1 To Sect
X = Cx + Cos(i * cnr) * rds
Y = Cy + Sin(i * cnr) * rds
pnt.Set X, Y
pnts.Add pnt
Next
pgn.Parts.Add pnts
Set ChangeCircleToPolygon = pgn
End Function
[此贴子已经被作者于2005-7-12 10:46:49编辑过]