2013-12-07 5 views
0
public void OnMouseDown(int Button, int Shift, int X, int Y) 
{ 
    IMxDocument mxDoc = m_App.Document as IMxDocument; 
    IActiveView activeView = mxDoc.FocusMap as IActiveView; 
    IScreenDisplay screenDisplay = activeView.ScreenDisplay; 

    ISimpleLineSymbol lineSymbol = new SimpleLineSymbolClass(); 
    IRgbColor rgbColor = new RgbColorClass(); 
    rgbColor.Red = 255; 
    lineSymbol.Color = rgbColor; 

    IRubberBand rubberLine = new RubberLineClass(); 
    IPolyline newPolyline = (IPolyline)rubberLine.TrackNew(screenDisplay, (ISymbol)lineSymbol); 

    screenDisplay.StartDrawing(screenDisplay.hDC, (short)esriScreenCache.esriNoScreenCache); 
    screenDisplay.SetSymbol((ISymbol)lineSymbol); 
    screenDisplay.DrawPolyline(newPolyline); 
    screenDisplay.FinishDrawing();  
} 

Это функция рисования полилиний. Но я хочу, чтобы полилинии автоматически сохранялись в слое «Линии», что возможно?ArcMap C# рисованные полилинии в выбранном слое

ответ

1

Ваш вопрос немного неясен. Ваш уровень линий уже существует?

Если вы хотите, чтобы ваш слой быть featurelayer, а не графический слой, а затем создать featureclass в рабочем пространстве и добавить объект строки к нему, как это (жаль, что в vb.net):

Dim pFeature as IFeature 
pFeature = pFeatureClass.CreateFeature() 
pFeature.Shape = newPolyline 
pFeature.Store() 

Затем создайте любителя из своего функционального класса и добавьте его на карту:

Dim pFeatureLayer as IFeatureLayer 
pFeatureLayer.FeatureClass = pFeatureClass 
pFeatureLayer.Name = "Lines" 
Dim pMap as IMap = pMxDoc.FocusMap 
pMap.AddLayer(pFeatureLayer)