阅读:2138回复:6
求救啊:总统 为什么我自定义的画线工具画出的线只有在缩放到很小的时候才可以显示~?
<P>求救啊:为什么我自定义的画线工具画出的线只有在缩放到很小的时候才可以显示~?</P>
|
|
1楼#
发布于:2005-07-21 16:46
<P>不知道你是怎么画的</P><img src="images/post/smile/dvbbs/em02.gif" />
|
|
|
2楼#
发布于:2005-07-21 16:59
<P>自定义的工具,ITool_MouseDown事件是这样写的:</P>
<P>If (m_pHookHelper.ActiveView Is Nothing) Then Exit Sub<BR>If m_pHookHelper.FocusMap.LayerCount = 0 Then Exit Sub<BR> Dim pLayer As ILayer<BR> Dim lyCount As Integer<BR> Dim pFeaLayer As IFeatureLayer<BR> For lyCount = 0 To m_pHookHelper.FocusMap.LayerCount - 1<BR> Set pLayer = m_pHookHelper.FocusMap.Layer(lyCount)<BR> If pLayer.Name = FrmSelLyr.ComboSelLyr.Text Then<BR> Set pFeaLayer = pLayer<BR> Set m_pFeaClass = pFeaLayer.FeatureClass<BR> Exit For<BR> End If<BR> Next<BR> If m_pFeaClass Is Nothing Then<BR> MsgBox "您还没有选择要编辑的图层!", vbExclamation, "提示"<BR> Exit Sub<BR> End If<BR> If m_pFeaClass.ShapeType <> esriGeometryPolyline Then<BR> MsgBox "您选择的图层不是线图层,不能添加线地物!", vbExclamation, "提示"<BR> Exit Sub<BR> End If<BR> Dim pRubberLine As IRubberBand<BR> Set pRubberLine = New RubberLine<BR> Set m_pLine = pRubberLine.TrackNew(m_pHookHelper.ActiveView.ScreenDisplay, Nothing)<BR> m_bInUse = True<BR> Dim pActiveView As esriCarto.IActiveView<BR> Set pActiveView = m_pHookHelper.FocusMap<BR> <BR> <BR> Dim pGeometry As IGeometry<BR> Set pGeometry = m_pLine<BR> Dim pWSEdit As IWorkspaceEdit<BR> Dim pDataSet As IDataset<BR> Set pDataSet = m_pFeaClass<BR> Set pWSEdit = pDataSet.Workspace<BR> pWSEdit.StartEditOperation<BR> Dim pfea As IFeature<BR> Set pfea = m_pFeaClass.CreateFeature<BR> With pfea<BR> Set .Shape = m_pLine<BR> .Store<BR> End With<BR> Dim pInvalidArea As esriGeoDatabase.IInvalidArea<BR> Set pInvalidArea = New esriCarto.InvalidArea<BR> Set pInvalidArea.Display = pActiveView.ScreenDisplay<BR> pInvalidArea.Add pfea<BR> <BR> pWSEdit.StopEditOperation<BR> pInvalidArea.Invalidate esriAllScreenCaches</P> |
|
3楼#
发布于:2005-07-21 17:37
<P>坐标有没进行转换?</P>
|
|
|
4楼#
发布于:2005-07-24 18:10
应该进行坐标转换的。
|
|
5楼#
发布于:2005-07-25 21:42
<P>怎么转化呀?我用到的tracknew,不需要进行点的坐标转化啊~</P>
<P>我的思路就是先tracknew一条线段,然后提取它的geometry,作为新feature的geometry进行保存!</P> <P>但画出的线可以选择,但是在非选择状态下,确是不可见的!</P> |
|
6楼#
发布于:2005-07-26 09:29
<P>每个geometry都有空间属性需要设置</P>
<P>当你把tracklayer上的东西转成geometry的时候,坐标也需要转化下</P> |
|
|