现在的位置: 首页 > 综合 > 正文

ArcGis实现贝特兹曲线(NewBezierFeedBack)

2013年09月10日 ⁄ 综合 ⁄ 共 2165字 ⁄ 字号 评论关闭

 

privatevoid
axMapControl1_OnMouseDown(object
sender, IMapControlEvents2_OnMouseDownEvente)

       {

           IPoint
pPoint = newPointClass();

           pPoint.PutCoords(e.mapX,
e.mapY);

           pActiveView=axMapControl1.ActiveView;

           if
(pFeedBack == null)

           {

               pFeedBack
=
newNewBezierCurveFeedbackClass();

               pFeedBack.Display
= pActiveView.ScreenDisplay;

               pFeedBack.Start(pPoint);

           }

           else

       
    {

               pFeedBack.AddPoint(pPoint);

           }

       }

 

       privatevoid
axMapControl1_OnMouseMove(object
sender, IMapControlEvents2_OnMouseMoveEvente)

       {

           if
(pFeedBack != null)

           {

               IPoint
pPoint = newPointClass();

               pPoint.PutCoords(e.mapX,
e.mapY);

               pFeedBack.MoveTo(pPoint);

           }

       }

 

 

       privatevoid
AddBezier(IGeometry
pGeometry, IActiveView
pActiveView)

       {

           IElementpElement;

           ILineElementpLineElement
=
newLineElementClass();

           ISimpleLineSymbolpSimpleLineSymbol
=
newSimpleLineSymbolClass();

 

           pElement = pLineElement
asIElement;

           pElement.Geometry = pGeometry;

 

           pSimpleLineSymbol.Color
= GetRGBColor(255, 215,0);

           pSimpleLineSymbol.Style
=
esriSimpleLineStyle.esriSLSSolid;

           pSimpleLineSymbol.Width
= 2;

 

           pLineElement.Symbol = pSimpleLineSymbol;

 

           IGraphicsContainerpGraphicsContainer
=axMapControl1.ActiveView
asIGraphicsContainer;

           pGraphicsContainer.AddElement((IElement)pLineElement,
0);

           axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,
null,
null
);

 

       }

       privateIRgbColor
GetRGBColor(int
red, int
green,
int blue)

       {

           IRgbColorrGBColor
=
newRgbColorClass();

           rGBColor.Red=
red;

           rGBColor.Green = green;

           rGBColor.Blue = blue;

           return
rGBColor;

       }

 

       privatevoid
axMapControl1_OnDoubleClick(object
sender, IMapControlEvents2_OnDoubleClickEvente)

       {

           IGeometrypGeometry;

           pGeometry = pFeedBack.Stop();

           pActiveView = axMapControl1.ActiveView;

           AddBezier(pGeometry, pActiveView);

           pFeedBack =
null;

       }

抱歉!评论已关闭.