日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

        歡迎訪問 生活随笔!

        生活随笔

        當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

        综合教程

        AE编辑点要素编辑

        發(fā)布時間:2024/1/3 综合教程 30 生活家
        生活随笔 收集整理的這篇文章主要介紹了 AE编辑点要素编辑 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

        來自:http://blog.163.com/liuyang1285@126/blog/static/128913086201212151123418/?latestBlog

        AE編輯--新增要素


        AE編輯-線要素編輯

        AE編輯-點要素編輯

        2012-02-21 17:11:23|分類: 工作 |標簽: |字號大中小訂閱

        點的捕捉

        指定捕捉圖層(開發(fā)中以電纜溝點圖層為捕捉圖層),設(shè)置捕捉半徑和捕捉要素顯示的標注信息,在OnMouseMove事件中處理實現(xiàn)。

        pt_Move = m_pScrD.DisplayTransformation.ToMapPoint(X, Y);

        if (m_pLineFeedback == null)

        {

        //清?空textelment markelment[IGroupElement]

        m_pAV.GraphicsContainer.Reset();

        IElementProperties elementProperties_temp = null;

        IElement elment = m_pAV.GraphicsContainer.Next();

        while (elment != null)

        {

        elementProperties_temp = elment as IElementProperties;

        if (elementProperties_temp.Name.StartsWith("SnapLabel"))

        {

        m_pAV.GraphicsContainer.DeleteElement(elment);

        }

        elment = m_pAV.GraphicsContainer.Next();

        }

        m_pAV.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, m_pAV.Extent);

        }

        featureCache = new FeatureCacheClass();

        //如果已經(jīng)擁有緩沖區(qū),而且當前點依然在該緩沖區(qū)內(nèi)部,那么不會填充生成新的緩沖

        if (!featureCache.Contains(pt_Move))

        {

        featureCache.Initialize(pt_Move, Convert.ToDouble(clsHelper.GetConfigValue("SnapRadius")));//10

        featureCache.AddFeatures(featureLayer.FeatureClass);

        IFeature feature;

        IGeometry geometry;

        int indexFeature, countFeature;

        countFeature = featureCache.Count;

        for (indexFeature = 0; indexFeature < countFeature; indexFeature++)

        {

        feature = featureCache.get_Feature(indexFeature);

        if (feature != null)

        {

        geometry = feature.Shape;

        IPoint hitPoint = new PointClass();

        double hitDist = 0;

        int hitPartIndex = 0;

        bool bRightSide = false;

        int hitSegmentIndex = 0;

        IHitTest hitTest = geometry as IHitTest;

        //m_pAV.Extent.Width / 200

        if (hitTest.HitTest(pt_Move, 2, esriGeometryHitPartType.esriGeometryPartVertex, hitPoint, ref hitDist, ref hitPartIndex, ref hitSegmentIndex, ref bRightSide))

        {

        AddPointElement(m_pAV, hitPoint, feature.get_Value(feature.Fields.FindField("TRENCHID")).ToString());

        break;//只高亮顯示一個要素

        }

        }

        }

        }

        ///

        /// </summary>

        /// <param name="pActiveView"></param>

        /// <param name="pPoint"></param>

        /// <param name="strLabel"></param>

        private void AddPointElement(IActiveView pActiveView, IPoint pPoint, string strLabel)

        {

        IMarkerElement pMarkerElement = new MarkerElementClass();

        IElement pElement;

        ISimpleMarkerSymbol pMarkerSymbol = new SimpleMarkerSymbol();

        IRgbColor pRgbColor = new RgbColorClass();

        pRgbColor.Red = 0;

        pRgbColor.Green = 255;

        pRgbColor.Blue = 25;

        pMarkerSymbol.Color = pRgbColor;

        pMarkerSymbol.Size = 5; //單位為像素

        pMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle;

        pMarkerElement.Symbol = (IMarkerSymbol)pMarkerSymbol;

        pElement = (IElement)pMarkerElement;

        pElement.Geometry = (IGeometry)pPoint;

        IElementProperties elementProperties_Trench = pMarkerElement as IElementProperties;

        elementProperties_Trench.Name = "SnapLabelPoint";

        pActiveView.GraphicsContainer.AddElement(pMarkerElement as IElement, 0);

        //pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, m_pAV.Extent);

        ITextElement pTextElement = new TextElementClass();

        IElement element_text;

        ISimpleTextSymbol simpleTextSymbol = new TextSymbolClass();

        stdole.StdFont myFont = new stdole.StdFont();

        myFont.Name = "Courier New";

        myFont.Size = 10;

        simpleTextSymbol.Font = myFont as stdole.IFontDisp;

        IRgbColor myColor = new RgbColorClass();

        myColor.Red = 150;

        myColor.Green = 0;

        myColor.Blue = 0;

        simpleTextSymbol.Color = myColor;

        simpleTextSymbol.Angle = 0;

        simpleTextSymbol.RightToLeft = false;

        simpleTextSymbol.VerticalAlignment = esriTextVerticalAlignment.esriTVATop;

        simpleTextSymbol.HorizontalAlignment = esriTextHorizontalAlignment.esriTHAFull;

        simpleTextSymbol.BreakCharacter = 20;

        pTextElement.Symbol = simpleTextSymbol;

        pTextElement.Text = "電纜溝:" + strLabel;

        pTextElement.ScaleText = true;//隨地圖比例尺變化

        element_text = pTextElement as IElement;

        element_text.Geometry = (IGeometry)pPoint;

        IElementProperties elementProperties = pTextElement as IElementProperties;

        elementProperties.Name = "SnapLabelText";

        pActiveView.GraphicsContainer.AddElement(pTextElement as IElement, 0);

        pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, m_pAV.Extent);

        }

        //獲取要素

        private IElement getElement(IPoint pPt, esriGeometryType geometryType)

        {

        IEnumElement pEnumElement;

        IElement pEle;

        pEnumElement = pGraphicContainer.LocateElements(pPt, pActiveView.Extent.Width / 100);

        if (pEnumElement != null)

        {

        pEnumElement.Reset();

        pEle = pEnumElement.Next();

        while (pEle != null)

        {

        if (pEle.Geometry.GeometryType == geometryType)

        {

        return pEle;

        }

        pEle = pEnumElement.Next();

        }

        }

        return null;

        }

        點的移動

        點的移動,實現(xiàn)步驟,首先MouseDown選中某點,MouseMove移動該點,MouseUp更新點的空間位置(與點拓撲關(guān)聯(lián)的要素也要同時更新)。

        選擇點要素,用到接口類 IDisplayFeedback,移動點用到類 IMovePointFeedback

        IPoint pPoint;

        OnMouseDown事件中選擇點要素后,并支持鼠標拖拽移動

        IHitTest pHitTest_Point;

        bool BoolHitTest_Point;

        IPoint pPtHit_Point = null;

        hitElement = getElement(pPt, esriGeometryType.esriGeometryPoint);

        if (hitElement != null)//捕捉到點要素

        {

        pPoint = hitElement.Geometry as IPoint;

        pDisplayFeedback = new MovePointFeedbackClass();

        pDisplayFeedback.Display = pScreenDisplay;

        ((IMovePointFeedback)pDisplayFeedback).Start(pPoint, pPt);

        }

        鼠標移動:public override void OnMouseMove(int Button, int Shift, int X, int Y)

        {

        IPoint pPt = new PointClass();

        pPt = pScreenDisplay.DisplayTransformation.ToMapPoint(X, Y);

        if (pDisplayFeedback != null)

        {

        pDisplayFeedback.MoveTo(pPt);

        }

        }

        鼠標MouseUp,保存新的要素空間位置以及相關(guān)屬性信息:

        private bool StoreFeatureGeometry(IFeature pFeature, IGeometry pIGeometry)

        {

        try

        {

        var pFeatureClass = pFeature.Class as IFeatureClass;

        var pDataset = pFeatureClass as IDataset;

        IWorkspace pWorkspace = pDataset.Workspace;

        var pWorkspaceEdit = pWorkspace as IWorkspaceEdit;

        pWorkspaceEdit.StartEditing(false);

        pWorkspaceEdit.StartEditOperation();

        //修T改nodeid|s_nodeid,e_nodeid

        if (pIGeometry.GeometryType == esriGeometryType.esriGeometryPoint)

        {

        string strNodeId = (pIGeometry as IPoint).X.ToString("0.000")+

        "-" + (pIGeometry as IPoint).Y.ToString("0.000");

        pFeature.set_Value(pFeature.Fields.FindField("NODEID"), strNodeId);

        }

        else if (pIGeometry.GeometryType == esriGeometryType.esriGeometryPolyline)

        {

        IPolyline polyline = pIGeometry as IPolyline;

        string strSNodeId = polyline.FromPoint.X.ToString("0.000")+

        "-" + polyline.FromPoint.Y.ToString("0.000");

        string strENodeId = polyline.ToPoint.X.ToString("0.000") +

        "-" + polyline.ToPoint.Y.ToString("0.000");

        pFeature.set_Value(pFeature.Fields.FindField("S_NODEID"), strSNodeId);

        pFeature.set_Value(pFeature.Fields.FindField("E_NODEID"), strENodeId);

        }

        pFeature.Shape = pIGeometry;

        pFeature.Store();

        pWorkspaceEdit.StopEditOperation();

        pWorkspaceEdit.StopEditing(true);

        return true;

        }

        catch (Exception ex)

        {

        return false;

        }

        }

        點要素屬性的修改

        首先獲取要編輯的IFeatureSet_Value(index,value)對字段賦值,最后Store()保存。

        總結(jié)

        以上是生活随笔為你收集整理的AE编辑点要素编辑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

        如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

        主站蜘蛛池模板: av免费观看网站 | 精品国产日本 | 五月婷婷爱爱 | 少妇精品视频一区二区 | 白俄罗斯毛片 | 日韩在线电影一区 | 精品96久久久久久中文字幕无 | 国产人妻一区二区三区四区五区六 | 亚洲精品乱码久久久久久按摩观 | 成人av地址 | 瑟瑟视频在线免费观看 | 中文字幕精品一区久久久久 | 无码粉嫩虎白一线天在线观看 | 久精品在线 | 午夜免费网站 | 婷婷俺来也 | 免费成人高清视频 | 久久色播| 日韩精品一区二区在线视频 | 日韩怡红院 | 蜜桃无码一区二区三区 | 综合视频在线 | 成人特级毛片69免费观看 | 精品国产自在精品国产精小说 | 538国产视频 | 国产伦精品一区二区三区视频女 | 欧美日p视频| 一区二区日韩视频 | 爱草在线视频 | 婷婷激情综合网 | 国产经典久久久 | 黄色一级片欧美 | 年代下乡啪啪h文 | 五十路在线 | 中文一区二区在线 | 国产精品揄拍100视频 | 好吊日免费视频 | 女人天堂av | 中文字幕高清在线播放 | 日韩人妻无码一区二区三区 | 男人免费网站 | 欧美日韩一级在线观看 | 99久久精品日本一区二区免费 | 亚洲免费天堂 | 日韩欧美视频二区 | 级毛片 | 欧美日韩18 | 一区在线看 | 久久精品免费观看 | 黄色一级大片在线观看 | 日韩色道| 一级黄色性生活片 | 免费毛片一区二区三区 | av在线男人天堂 | 激情综合网激情 | 午夜男人影院 | 国产a一级片 | 无码h肉动漫在线观看 | 伊人艹| 日本性猛交| 日本一级黄色录像 | 黄色片地址 | 99re8在线精品视频免费播放 | 国产无套免费网站69 | 午夜欧美精品 | 进去里在线观看 | www.4hu95.com四虎 极品在线视频 | 亚洲第一av网站 | 免费麻豆国产一区二区三区四区 | 亚洲欧美日韩色图 | 强开乳罩摸双乳吃奶羞羞www | 久热青草 | 看片一区二区 | 无遮挡在线观看 | 国产高清视频在线观看 | 欧洲一级黄 | 国产高潮流白浆喷水视频 | 操人视频免费 | 日韩精品一区二区三区色欲av | 奇米狠狠干 | 久久精品一区二区三区四区 | 超碰caoprom| 免费观看视频在线观看 | 久久人人人 | 亚洲视频一区二区三区在线观看 | 国模av | 天天色棕合合合合合合合 | 欧美亚洲三级 | 欧美精品一区在线 | 国产精品久久无码一三区 | 久久国产精品一区二区 | 麻豆网站免费看 | 中国美女一级看片 | 成年人免费在线观看视频网站 | 中文字幕在线观看亚洲 | 自拍视频在线播放 | 中文字幕第27页 | 免费一区 | 深夜视频在线播放 |