ahshegis
路人甲
路人甲
  • 注册日期2004-10-22
  • 发帖数181
  • QQ
  • 铜币847枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2701回复:5

PageLayoutControl中如何设定地图的比例尺??

楼主#
更多 发布于:2005-09-06 08:33
<P>AO+VB,在PageLayoutControl中如何设定地图的比例尺??就象ArcMap中在打印状态下的地图比例尺一样</P>
<img src="images/post/smile/dvbbs/em12.gif" />
喜欢0 评分0
ahshegis
路人甲
路人甲
  • 注册日期2004-10-22
  • 发帖数181
  • QQ
  • 铜币847枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-09-15 10:10
感谢感谢!
举报 回复(0) 喜欢(0)     评分
kisssy
卧底
卧底
  • 注册日期2004-04-18
  • 发帖数235
  • QQ
  • 铜币614枚
  • 威望2点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-09-14 17:26
<a href="http://www.gisempire.com/bbs/dispbbs.asp?boardID=62;ID=45564;page=2" target="_blank" >http://www.gisempire.com/bbs/dispbbs.asp?boardID=62;ID=45564;page=2</A>
个人专栏: https://zhuanlan.zhihu.com/c_165676639
举报 回复(0) 喜欢(0)     评分
ahshegis
路人甲
路人甲
  • 注册日期2004-10-22
  • 发帖数181
  • QQ
  • 铜币847枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-09-14 17:09
<P>老大,那句pUID.Value = "esriCore.ScaleBar"我想改变比例尺的样式,应该怎样,在哪里可以查到它的样式?</P>
<img src="images/post/smile/dvbbs/em12.gif" />
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
4楼#
发布于:2005-09-06 11:13
<P 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; mso-char-indent-count: 1.71">本例要实现的功能是以鼠标在Page Layout上画的Envelope为范围在PageLayout上添加Scale Text。<p></p></P>
<P 0cm 0cm 0pt 39pt; TEXT-INDENT: -42pt; mso-list: l0 level1 lfo1; tab-stops: 9.0pt 18.0pt list 39.0pt">l   要点<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 18pt; LINE-HEIGHT: 12pt; mso-line-height-rule: exactly">本例中,首先需要在PageLayout上创建一个Scale Text元素,然后再设置该元素的属性。实现此功能,用到了接口IScaleText,该接口是用来控制Scale Text,下面是接口属性的介绍:<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 21pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 2.0; mso-line-height-rule: exactly">Symbol:设置Scale Text的Text的属性<p></p></P>
<P 0cm 0cm 0pt 63pt; TEXT-INDENT: -42pt; LINE-HEIGHT: 12pt; mso-char-indent-count: -4.0; mso-line-height-rule: exactly; mso-para-margin-left: 2.0gd">Style:设置Scale Text风格。Scale Text有两种风格:esriScaleTextAbsolute(例:1:5000)和esriScaleTextRelative(例:1 inch equals 800 miles)<p></p></P>
<P 0cm 0cm 0pt 39pt; TEXT-INDENT: -42pt; mso-list: l0 level1 lfo1; tab-stops: 9.0pt 18.0pt list 39.0pt">l   程序说明<p></p></P>
<P 0cm 0cm 0pt; tab-stops: 9.0pt 18.0pt">   函数CreateScaleText根据传入的pExtent参数在PageLayout上添加一个Scale Text元素。<p></p></P>
<P 0cm 0cm 0pt 39pt; TEXT-INDENT: -42pt; mso-list: l0 level1 lfo1; tab-stops: 9.0pt 18.0pt list 39.0pt">l   代码<p></p></P>
<TABLE #cccccc; MARGIN: auto auto auto 9.05pt; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 4.95pt 0cm 4.95pt" cellSpacing=0 cellPadding=0 border=0>

<TR yes">
<TD #ece9d8; PADDING-RIGHT: 4.95pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 4.95pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 354.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #ece9d8; BACKGROUND-COLOR: transparent" vAlign=top width=473>
<P 0cm 0cm 0pt 147.3pt; TEXT-INDENT: -147.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -18.41; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">Private Sub UIToolControl1_MouseDown(ByVal button As Long, ByVal shift As Long, ByVal x As Long, _ ByVal y As Long)<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Dim pMxDocument             As IMxDocument<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Dim pActiveView             As IActiveView<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Dim pEnvelope               As IEnvelope<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Dim pRubberBand             As IRubberBand<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly"><p> </p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    On Error GoTo ErrorHandler<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pMxDocument = ThisDocument<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    '确保AcrMap在Layout模式下<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    If Not pMxDocument.ActiveView Is pMxDocument.PageLayout Then<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">        Exit Sub<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    End If<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    '初始设定<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pActiveView = pMxDocument.PageLayout<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pRubberBand = New RubberEnvelope<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pEnvelope = pRubberBand.TrackNew(pMxDocument.ActiveView.ScreenDisplay, Nothing)<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly"><p> </p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    CreateScaleText pEnvelope, pActiveView<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    <p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pActiveView.Refresh<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Exit Sub<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">ErrorHandler:<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    MsgBox Err.Description<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">End Sub<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly"><p> </p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">Public Sub CreateScaleText(pExtent As IEnvelope, pActiveView As IActiveView)<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Dim pMapFrame                   As IMapFrame<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Dim pMapSurroundF               As IMapSurroundFrame<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Dim pMapSurround                As IMapSurround<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Dim pElement                    As IElement<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Dim pScaleText                  As IScaleText<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Dim pTextSymbol                 As ITextSymbol<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Dim pUID                        As New UID<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly"><p> </p></P>
<P 0cm 0cm 0pt -3.15pt; TEXT-INDENT: 16pt; LINE-HEIGHT: 10pt; mso-char-indent-count: 2.0; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly; mso-para-margin-left: -.3gd">On Error GoTo ErrorHandler<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    If Not TypeOf pActiveView Is IPageLayout Then Exit Sub<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pMapFrame = pActiveView.GraphicsContainer.FindFrame(pActiveView.FocusMap)<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pUID.Value = "esriCore.ScaleText"<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    '根据UID创建Scale Text<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pMapSurroundF = pMapFrame.CreateSurroundFrame(pUID, Nothing)<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pElement = pMapSurroundF<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pElement.Geometry = pExtent<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    <p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pMapSurround = pMapSurroundF.MapSurround<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pScaleText = pMapSurround<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pTextSymbol = New esriCore.TextSymbol<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pTextSymbol.Size = 20<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    '设置Scale Text的Symbol属性<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pScaleText.Symbol = pTextSymbol<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    '设置Scale Text的Style<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pScaleText.Style = esriScaleTextRelative<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pActiveView.GraphicsContainer.AddElement pElement, 0<p></p></P>
<P 0cm 0cm 0pt 7.35pt; TEXT-INDENT: 8pt; LINE-HEIGHT: 10pt; mso-char-indent-count: 1.0; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly; mso-para-margin-left: .7gd">Exit Sub<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly"><p> </p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">ErrorHandler:<p></p></P>
<P 0cm 0cm 0pt 7.3pt; TEXT-INDENT: -7.3pt; LINE-HEIGHT: 10pt; mso-char-indent-count: -.91; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    MsgBox Err.Description<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">End Sub<p></p></P></TD></TR></TABLE>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
5楼#
发布于:2005-09-06 11:12
<P 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; mso-char-indent-count: 1.71">本例要实现的功能是以鼠标在Page Layout上画的Envelope为范围在PageLayout上添加Scale Bar。<p></p></P>
<P 0cm 0cm 0pt 39pt; TEXT-INDENT: -42pt; mso-list: l0 level1 lfo1; tab-stops: 9.0pt 18.0pt list 39.0pt">l   要点<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 18pt; LINE-HEIGHT: 12pt; mso-line-height-rule: exactly">首先需要在PageLayout上创建一个Scale Bar元素,然后再设置该元素的属性。要实现此功能,用到了接口IScaleBar,用来控制ScaleBar。以下是该接口的属性介绍:<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 18pt; LINE-HEIGHT: 12pt; mso-line-height-rule: exactly">Division:设置比例尺的分割单位;<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 18pt; LINE-HEIGHT: 12pt; mso-line-height-rule: exactly">DivisionsBeforeZero:设置比例尺原点左侧显示的段数;<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 1.71; mso-line-height-rule: exactly">Divisions:设置比例尺的总段数(包括原点左侧的段数);<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 1.71; mso-line-height-rule: exactly">Subdivisions:设置主比例尺分为几个子段;<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 1.71; mso-line-height-rule: exactly">Units:设置比例尺的单位;<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 1.71; mso-line-height-rule: exactly">UnitLabel:String型,设置单位标签上的内容;<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 1.71; mso-line-height-rule: exactly">UnitLabelPosition:设置单位标签显示的位置;<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 1.71; mso-line-height-rule: exactly">LabelPosition:比例尺数字标签的显示位置;<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 17.95pt; LINE-HEIGHT: 12pt; mso-char-indent-count: 1.71; mso-line-height-rule: exactly">LabelFrequency:比例尺数字标签的风格。<p></p></P>
<P 0cm 0cm 0pt 39pt; TEXT-INDENT: -42pt; mso-list: l0 level1 lfo1; tab-stops: 9.0pt 18.0pt list 39.0pt">l   程序说明<p></p></P>
<P 0cm 0cm 0pt; tab-stops: 9.0pt 18.0pt">   函数CreateScaleBar根据传入的pExtent参数在PageLayout上添加一个ScaleBar元素。<p></p></P>
<P 0cm 0cm 0pt 39pt; TEXT-INDENT: -42pt; mso-list: l0 level1 lfo1; tab-stops: 9.0pt 18.0pt list 39.0pt">l   代码<p></p></P>
<TABLE #cccccc; MARGIN: auto auto auto 9.05pt; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 4.95pt 0cm 4.95pt" cellSpacing=0 cellPadding=0 border=0>

<TR yes">
<TD #ece9d8; PADDING-RIGHT: 4.95pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 4.95pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 354.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: #ece9d8; BACKGROUND-COLOR: transparent" vAlign=top width=473>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">Private Sub UIToolControl1_MouseDown(ByVal button As Long, ByVal shift As Long, ByVal x As Long,_<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">         ByVal y As Long)<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    Dim pMxDocument             As IMxDocument<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    Dim pActiveView             As IActiveView<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    Dim pEnvelope               As IEnvelope<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    Dim pRubberBand             As IRubberBand<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly"><p> </p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    On Error GoTo ErrorHandler<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    Set pMxDocument = ThisDocument<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    '确保AcrMap在Layout模式下<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    If Not pMxDocument.ActiveView Is pMxDocument.PageLayout Then<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">        Exit Sub<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    End If<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    '初始设定<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    Set pActiveView = pMxDocument.PageLayout<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    Set pRubberBand = New RubberEnvelope<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    Set pEnvelope = pRubberBand.TrackNew(pMxDocument.ActiveView.ScreenDisplay, Nothing)<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly"><p> </p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    CreateScaleBar pEnvelope, pActiveView<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    <p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    pActiveView.Refresh<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    Exit Sub<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">ErrorHandler:<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 9.0pt 18.0pt; mso-line-height-rule: exactly">    MsgBox Err.Description<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">End Sub<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><p> </p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">Public Sub CreateScaleBar(pExtent As IEnvelope, pActiveView As IActiveView)<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">     Dim pMapFrame                   As IMapFrame<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">     Dim pMapSurroundF               As IMapSurroundFrame<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">     Dim pMapSurround                As IMapSurround<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">     Dim pElement                    As IElement<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">     Dim pFillSymbol                 As IFillSymbol<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">     Dim pLineSymbol                 As ILineSymbol<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">     Dim pColor                      As IColor<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">     Dim pSymbolBackground           As ISymbolBackground<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">     Dim pScaleBar                   As IScaleBar<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">     Dim pUID                        As New UID<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly"><p> </p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">     On Error GoTo ErrorHandler<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">     If Not TypeOf pActiveView Is IPageLayout Then<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">         Exit Sub<p></p></P>
<P 0cm 0cm 0pt -3.1pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">     End If<p></p></P>
<P 0cm 0cm 0pt; TEXT-INDENT: 16pt; LINE-HEIGHT: 10pt; mso-char-indent-count: 2.0; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">Set pMapFrame = pActiveView.GraphicsContainer.FindFrame(pActiveView.FocusMap)<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pUID.Value = "esriCore.ScaleBar"<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    '根据UID创建Scale Bar<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pMapSurroundF = pMapFrame.CreateSurroundFrame(pUID, Nothing)<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    <p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pSymbolBackground = New esriCore.SymbolBackground<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pFillSymbol = New esriCore.SimpleFillSymbol<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pLineSymbol = New esriCore.SimpleLineSymbol<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pColor = New esriCore.RgbColor<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pColor.RGB = RGB(255, 255, 255)<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pLineSymbol.Color = pColor<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pFillSymbol.Color = pColor<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pFillSymbol.Outline = pLineSymbol<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pSymbolBackground.FillSymbol = pFillSymbol<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pMapSurroundF.Background = pSymbolBackground<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    <p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pElement = pMapSurroundF<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pElement.Geometry = pExtent<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    <p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pMapSurround = pMapSurroundF.MapSurround<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    '创建一个single alternating scale bar<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pScaleBar = New esriCore.AlternatingScaleBar<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pMapSurround = pScaleBar<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    '设置Scale Bar的属性,如分割单位、数字显示的位置、label和label显示位置等<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    With pScaleBar<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">        .Division = 100<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">        .DivisionsBeforeZero = 0<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">        .Divisions = 2<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">        .Subdivisions = 4<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">        .Units = esriMeters<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">        .UnitLabel = "m"<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">        .UnitLabelPosition = esriScaleBarAfterBar<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">        .LabelPosition = esriAbove<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">        .LabelFrequency = esriScaleBarDivisionsAndFirstMidpoint<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    End With<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly"><p> </p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pMapSurroundF.MapSurround = pMapSurround<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Set pElement = pMapSurroundF<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    pActiveView.GraphicsContainer.AddElement pElement, 0<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    Exit Sub<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">ErrorHandler:<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">    MsgBox Err.Description<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; tab-stops: 1.25pt 18.0pt; mso-line-height-rule: exactly">End Sub<p></p></P></TD></TR></TABLE>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
游客

返回顶部