⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapobject学习笔记-第五讲 mo图形的绘制_魏国强 的 博客.htm

📁 MO+VC的学习文档资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT 
      size=2>sym.Color = moRed</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT 
      size=2>sym.SymbolType = moLineSymbol</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT 
      size=2>sym.Size = 5</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT 
      size=2>Map1.DrawShape g_line, sym</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>End 
      If</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>End 
      If</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>End 
      Sub</FONT></SPAN></P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT 
      size=2>Private Sub Map1_MouseDown(Button As Integer, Shift As Integer, X 
      As Single, Y As Single)</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>If 
      Button = 1 Then</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>If 
      g_line Is Nothing Then</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>Set 
      g_line = New MapObjects2.Line</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>End 
      If</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>If 
      pts Is Nothing Then</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>Set 
      pts = New Points</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>End 
      If</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>Set p 
      = Map1.ToMapPoint(X, Y)</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT 
      size=2>pts.Add p</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>If 
      pts.Count = 1 Then</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT 
      size=2>g_line.Parts.Add pts</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>Set 
      pts = g_line.Parts(0)</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>End 
      If</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT 
      size=2>Map1.TrackingLayer.Refresh True</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT 
      size=2>Else</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT 
      size=2>MsgBox "right"</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>End 
      If</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><FONT size=2>End 
      Sub</FONT></SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P><SPAN><FONT size=2>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><STRONG><SPAN>4</SPAN><SPAN>、画矩形和椭圆</SPAN></STRONG></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>(</SPAN><SPAN>1</SPAN><SPAN>)预定义画矩形:画矩形是先定义一个矩形对象,给它的</SPAN><SPAN>top</SPAN><SPAN>、</SPAN><SPAN>left</SPAN><SPAN>、</SPAN><SPAN>bottom</SPAN><SPAN>、</SPAN><SPAN>right</SPAN><SPAN>属性赋值,再使用</SPAN><SPAN>DrawShape</SPAN><SPAN>方法就可以画出一个矩形来。定义矩形范围时,可以先确定一个中心点,再确定一个半径(或</SPAN><SPAN>X</SPAN><SPAN>方向半径和</SPAN><SPAN>Y</SPAN><SPAN>方向半径),得到</SPAN><SPAN>top</SPAN><SPAN>、</SPAN><SPAN>left</SPAN><SPAN>、</SPAN><SPAN>bottom</SPAN><SPAN>、</SPAN><SPAN>right</SPAN><SPAN>的值。示例:</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Option 
      Explicit</SPAN></P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Dim rect As 
      MapObjects2.Rectangle</SPAN></P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Private Sub 
      Command1_Click()</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Dim dist As 
      Double</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Dim pt As New 
      Point</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Set rect = New 
      MapObjects2.Rectangle</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>dist = 
      0.2</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Set pt = 
      Map1.ToMapPoint(2500, 1500)’</SPAN><SPAN>这里可以动态设置中心点的位置</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>rect.Right = pt.X 
      + dist</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>rect.Left = pt.X - 
      dist</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>rect.Top = pt.Y + 
      dist</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>rect.Bottom = pt.Y 
      - dist</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Map1.Refresh</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End Sub</SPAN></P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Private Sub 
      Map1_AfterTrackingLayerDraw(ByVal hDC As stdole.OLE_HANDLE)</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>If Not rect Is 
      Nothing Then</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Dim sym As New 
      Symbol</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>sym.SymbolType = 
      moFillSymbol</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>sym.Style = 
      moDiagonalCrossFill</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>sym.Color = 
      moBlue</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Map1.DrawShape 
      rect, sym</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End If</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End Sub</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>(</SPAN><SPAN>2</SPAN><SPAN>)定义一个矩形框对象后,进行画矩形。示例:</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Option 
      Explicit</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Dim rect As 
      MapObjects2.Rectangle</SPAN></P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Private Sub 
      Map1_AfterTrackingLayerDraw(ByVal hDC As stdole.OLE_HANDLE)</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Dim sym As New 
      MapObjects2.Symbol</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>If Not rect Is 
      Nothing Then</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>sym.SymbolType = 
      moFillSymbol</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>sym.Style = 
      moDiagonalCrossFill</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>sym.Color = 
      moBlue</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Map1.DrawShape rect, 
      sym</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End If</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End Sub</SPAN></P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Private Sub 
      Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As 
      Single)</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Set rect = 
      Map1.TrackRectangle</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Map1.TrackingLayer.Refresh 
      True</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End Sub</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>用同样的方法可以画出椭圆来。</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><STRONG><SPAN>5</SPAN><SPAN>、用</SPAN><SPAN>Track</SPAN><SPAN>方法画图形</SPAN></STRONG></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>在</SPAN><SPAN>MO</SPAN><SPAN>中还可以用一类方法在地图上半自动画图,如:</SPAN><SPAN>TrackCircle</SPAN><SPAN>方法,点击产生圆心,拖动产生半径,放手成圆形;</SPAN><SPAN>TrackRectangle</SPAN><SPAN>方法,点击产生一个角,拖动放大,放手形成矩形;</SPAN><SPAN>TrackPolygon</SPAN><SPAN>方法,点击画几条直线,双击形成多边形图形。这一类方法都是以</SPAN><SPAN>Track</SPAN><SPAN>开头,所以称为</SPAN><SPAN>Track</SPAN><SPAN>画图方法,这和</SPAN><SPAN>TrackingLayer</SPAN><SPAN>(动态图层)毫无关系。示例:</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Option 
      Explicit</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Dim eli As 
      MapObjects2.Ellipse</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Dim recs As 
      MapObjects2.Rectangle</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Dim ply As 
      MapObjects2.Polygon</SPAN></P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Private Sub 
      Map1_AfterTrackingLayerDraw(ByVal hDC As stdole.OLE_HANDLE)</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>Dim sym As New 
      MapObjects2.Symbol</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      </SPAN>sym.SymbolType = moFillSymbol</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>sym.Style = 
      moDiagonalCrossFill</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>If Not recs Is 
      Nothing Then</SPAN></P>
      <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>sym.Color = 
      moBlue</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>Map1.DrawShape recs, 
      sym</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End If</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>If Not eli Is 
      Nothing Then</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>sym.Color = 
      moRed</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>Map1.DrawShape eli, 
      sym</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>End If</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>If Not ply Is Nothing 
      Then</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>sym.Color = 
      moGreen</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>Map1.DrawShape ply, 
      sym</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN><SPAN 
      style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN>End If</SPAN></P>
      <P class=MsoNormal 
      style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt"><SPAN>End Sub</SPAN></P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -