• <menu id="w2i4a"></menu>
  • logo VectorDraw Developer Framework使用教程

    文檔首頁>>VectorDraw Developer Framework使用教程>>VDF常見問題整理(十九):如何在折線上創(chuàng)建新頂點并單擊來移動它?

    VDF常見問題整理(十九):如何在折線上創(chuàng)建新頂點并單擊來移動它?


        VectorDraw Developer Framework(VDF)是一個用于應(yīng)用程序可視化的圖形引擎庫。有了VDF提供的功能,您可以輕松地創(chuàng)建、編輯、管理、輸出、輸入和打印2D和3D圖形文件。   

    VectorDraw Developer Framework試用版下載


        點開本篇文章,是否對矢量圖形工具感興趣呢?來看看最新的矢量圖形工具測評吧!點擊此處>>即可直達哦!

    問:

        我正在嘗試添加一個函數(shù),用戶可以在按住Shift的同時單擊多段線上的一點,在該點處添加新頂點,并且拖動操作立即開始。我怎樣才能做到這一點 ?

    答:

        使用InsertAt在折線的VertexList中添加一個點,并使用cmdMoveGripPoints開始移動新添加的夾點。代碼如下所示:

    using VectorDraw.Professional.vdObjects;
    using VectorDraw.Professional.vdFigures;
    using VectorDraw.Geometry;
    using VectorDraw.Professional.vdCollections;
    using VectorDraw.Professional.vdPrimaries;
    using System.Runtime.InteropServices;
    using VectorDraw.Professional.ActionUtilities;
    using VectorDraw.Generics;
    .......
    .......
            [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
            public static extern short GetAsyncKeyState(int vkey); // see 
    // http://msdn.microsoft.com/en-us/library/windows/desktop/ms646293%28v=vs.85%29.aspx
    
            void BaseControl_vdMouseDown(MouseEventArgs e, ref bool cancel)
            {
                gPoint pos = doc.CCS_CursorPos();
                gPoint p1 = doc.World2PixelMatrix.Transform(pos as gPoint);
                Point location1 = new Point((int)p1.x, (int)p1.y);
                vdFigure fig10 = doc.ActiveLayOut.GetEntityFromPoint(location1, 10, false);
                if (fig10 is vdPolyline)
                {
                    if (GetAsyncKeyState((int)Keys.ShiftKey) < 0)
                    {
                        //add a vertex after the segment index
                        vdPolyline tmp = (vdPolyline)fig10 as vdPolyline;
                        int vertIDX = tmp.SegmentIndexFromPoint(pos, 1);
                        tmp.VertexList.InsertAt(vertIDX + 1, new Vertex(pos));
                        tmp.Update();
                        tmp.Invalidate();
    
                        vdSelection sel = new VectorDraw.Professional.vdCollections.vdSelection();
                        sel.SetUnRegisterDocument(doc);
                        Box box = new Box();
                        box.AddPoint(doc.Model.View2WorldMatrix.Transform(pos));
                        box.AddWidth(doc.GlobalRenderProperties.GripSize * doc.ActiveRender.PixelSize / 2.0d);
    
                        sel.AddItem(tmp, false,vdSelection.AddItemCheck.Nochecking, true);
                        Int32Array indexes = doc.Model.getGripIndexes(tmp, box);
                        VectorDraw.Generics.vdArrayindexesArray = new vdArray();
                        indexesArray.AddItem(indexes);
    
                        VectorDraw.Actions.BaseAction movegrips = new CmdMoveGripPoints(pos, doc.ActiveLayOut,
                                                         sel, indexesArray);
                        doc.ActionAdd(movegrips);
                        VectorDraw.Actions.StatusCode ret = movegrips.WaitToFinish();
                        string retStr = ret.ToString();
                        //MessageBox.Show("Action cmdMoveGripPoints ended with result : " + retStr + 
                        //                   " . new vertex is now : " + pos.ToString());
                        cancel = true;
                    }
                }
            }

        對于以上問答,如果您有任何的疑惑都可以在評論區(qū)留言,我們會及時回復(fù)。此系列的問答教程我們會持續(xù)更新,如果您感興趣,可以多多關(guān)注本教程。

    熱門文章推薦:

    如何排除GroundSurface對象的三角形區(qū)域?

    復(fù)雜自定義對象的入門指南

    點擊此處還有VectorDraw Developer Framework的demo示例等著你來體驗哦!


        如果您對想要購買正版授權(quán)VectorDraw Developer Framework(VDF,可以聯(lián)系在線客服>>咨詢相關(guān)問題。

        關(guān)注慧聚IT微信公眾號 ???,了解產(chǎn)品的最新動態(tài)及最新資訊。

    dd2629f30d553d56ccaf7164fdcb784e-sz_28327.webp.jpg

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();