qhg103
路人甲
路人甲
  • 注册日期2004-07-12
  • 发帖数48
  • QQ
  • 铜币311枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
阅读:1413回复:1

MAPCONTROL上的标注不能随比例变化,在先等各位的帮忙!!!

楼主#
更多 发布于:2005-12-09 10:39
<P>下面是我写标注的代码,和刷新MAPCONTROL的时候刷新标注的代码,</P>
<P>运行的结果是标注大小没有随MAPCONTROL的比例变化,请帮忙看看那里出问题,谢谢</P>
<P>''刷新地图控件<BR>Public Function RefreshMapcontrol(pEnv As IEnvelope)<BR>Dim pGraphicsContainer As IGraphicsContainer<BR>Dim pTextElement As ITextElement<BR>Dim pElement As IElement<BR>Dim dScale As Double<BR>Dim pMapScale As Double<BR>Dim pFont As IFontDisp<BR>Dim i As Integer<BR>Set pFont = New stdole.StdFont<BR>Set pGraphicsContainer = frmPipeAnalyse.MapControl1.ActiveView.GraphicsContainer<BR>Set pTextElement = New TextElement<BR>dScale = pEnv.Envelope.Width * 2<BR>pMapScale = frmPipeAnalyse.MapControl1.ActiveView.Extent.Width * 39.37<BR>pMapScale = pMapScale / (frmPipeAnalyse.MapControl1.Width / 1440)<BR><BR>pGraphicsContainer.Reset<BR>Set pTextElement = pGraphicsContainer.Next<BR>While (Not pTextElement Is Nothing)<BR>Set pElement = pTextElement<BR>Set pFont = New stdole.StdFont<BR>pFont = pTextElement.Symbol.Font<BR>pFont.Size = pFont.Size * dScale / pMapScale<BR>pTextElement.Symbol.Font = pFont<BR>pTextElement.ScaleText = True<BR>pGraphicsContainer.UpdateElement pTextElement<BR>Set pElement = pTextElement<BR>frmPipeAnalyse.MapControl1.ActiveView.PartialRefresh esriViewGeography, pElement, Nothing<BR>Set pTextElement = pGraphicsContainer.Next<BR>Wend<BR>End Function</P>
<P><BR>''在地图控件上写标注<BR>Public Function AddText(pX As Double, pY As Double, pStr As String, Optional nTextSize As Integer = 10, Optional pWidth As Double = 1)<BR>Dim pElement As IElement<BR>Dim pTempElement1 As IElement<BR>Dim pTextElement As ITextElement<BR>Dim pTempElement As ITextElement<BR>Dim pTextSymbol As esriDisplay.IFormattedTextSymbol<BR>Dim pActiveView As IActiveView<BR>Dim pGraphicsContainer As IGraphicsContainer<BR>Dim pPoint As IPoint<BR>Dim pFont As IFontDisp<BR>Dim dScale As Double<BR>Dim pMapScale As Double<BR>If pWidth = 0 Then<BR>dScale = frmPipeAnalyse.MapControl1.Extent.Width / 2<BR>pMapScale = frmPipeAnalyse.MapControl1.Extent.Width * 39.37<BR>pMapScale = pMapScale / (frmPipeAnalyse.MapControl1.Width / 1440)<BR>End If<BR>Set pGraphicsContainer = frmPipeAnalyse.MapControl1.ActiveView.GraphicsContainer<BR>Set pActiveView = frmPipeAnalyse.MapControl1.ActiveView<BR>Set pTextElement = New TextElement<BR>Set pTextSymbol = New esriDisplay.TextSymbol<BR>pTextSymbol.Size = nTextSize<BR>Set pFont = New stdole.StdFont<BR>pFont.Name = "宋体"<BR>pFont.Weight = 500<BR>pFont.Size = pTextSymbol.Size * dScale * 2 / pMapScale<BR>pTextSymbol.Font = pFont<BR><BR>Set pPoint = New Point<BR>pPoint.x = pX<BR>pPoint.y = pY<BR>Set pElement = pTextElement<BR>pElement.Geometry = pPoint<BR>pTextSymbol.HorizontalAlignment = esriTHACenter<BR>pTextSymbol.VerticalAlignment = esriTVABottom<BR>pTextElement.Symbol = pTextSymbol<BR>pTextElement.Text = pStr<BR>pTextElement.ScaleText = True<BR>pGraphicsContainer.AddElement pElement, 0<BR>Set pElement = Nothing<BR>Set pTextElement = Nothing<BR>Set pTextSymbol = Nothing<BR>Set pGraphicsContainer = Nothing<BR>pElement.Activate pActiveView.ScreenDisplay<BR>frmPipeAnalyse.MapControl1.Refresh esriViewGraphics, pElement <BR>End Function</P>
喜欢0 评分0
qhg103
路人甲
路人甲
  • 注册日期2004-07-12
  • 发帖数48
  • QQ
  • 铜币311枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
1楼#
发布于:2005-12-09 11:01
<P>各位帮帮忙啊,</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部