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

    文檔首頁(yè)>>VectorDraw Developer Framework使用教程>>VDF常見(jiàn)問(wèn)題整理(二十六):用戶如何清空重做堆棧?

    VDF常見(jiàn)問(wèn)題整理(二十六):用戶如何清空重做堆棧?


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

    VectorDraw Developer Framework試用版下載


        點(diǎn)開(kāi)本篇文章,是否對(duì)矢量圖形工具感興趣呢?來(lái)看看最新的矢量圖形工具測(cè)評(píng)吧!點(diǎn)擊此處>>即可直達(dá)哦!

    問(wèn):

        用戶在執(zhí)行新操作后,如何清空重做堆棧(排除這是一個(gè)重做步驟之后)?

    答:

        有兩種方法可以實(shí)現(xiàn)此目的:

    • 第一種是每當(dāng)用戶執(zhí)行諸如移動(dòng)夾點(diǎn),添加新實(shí)體之類的操作以及通常觸發(fā)UndoHistory_OnStoreValue事件的所有操作時(shí),第一個(gè)操作都會(huì)擦除堆棧。

    • 第二種方法是在用戶通過(guò)命令行調(diào)用特定命令后擦除重做堆棧。

    第一種:

    首先獲取此事件:

    vdFramedControl1.BaseControl.ActiveDocument.UndoHistory.OnStoreValue += new VectorDraw.Professional.UndoRedo.ModificationHistory.StoreValueEventHandler(UndoHistory_OnStoreValue);

    將此函數(shù)添加為事件處理程序:

    bool whileRedo = false;
    void UndoHistory_OnStoreValue(object sender, bool isRedo, object propObject, string propName, object value, ref bool Cancel)
    { 
       //We use this check to make sure that the new Undo value stored is not coming from a Redo command.
       if (!isRedo && !whileRedo)
          vdFramedControl1.BaseControl.ActiveDocument.UndoHistory.ClearRedoStack();
    }
    Also get this event in order to override the functionality of Redo:vdFramedControl1.CommandLine.CommandExecute += new VectorDraw.Professional.vdCommandLine.CommandExecuteEventHandler(CommandLine_CommandExecute);
    Add this function to handle the above event:void CommandLine_CommandExecute(string commandname, bool isDefaultImplemented, ref bool success)
    {
       //Here we override the Redo command in order to set the whileRedo function to true. That way we will know if the OnStoreValue event mentioned above is called due to a Redo function.
       if (string.Compare(commandname, "redo", true) == 0 || string.Compare(commandname, "r", true) == 0)
       {
          success = true; doc.CommandAction.Prompt("\r\n" + commandname); doc.CommandAction.Prompt(null);
     
          whileRedo = true;
          doc.UndoHistory.Redo();
          whileRedo = false;
     
          doc.Update();
          doc.Invalidate();
       }
    }

        使用上面的代碼,就將實(shí)現(xiàn)所求操作。每次您修改對(duì)象的屬性,添加新對(duì)象或任何創(chuàng)建撤消值的內(nèi)容時(shí),都會(huì)清除重做堆棧。這樣,用戶添加新項(xiàng)或修改屬性后,您將無(wú)法選擇重做。

    第二種:

        您還可以使用更靈活的代碼。例如,如果僅在特定命令(行的創(chuàng)建等)之后才需要清除重做堆棧,而在用戶編輯屬性時(shí)則不需要清除重做堆棧,請(qǐng)使用以下代碼。

        獲取此事件以覆蓋所需的任何命令的功能:

    vdFramedControl1.CommandLine.CommandExecute += new VectorDraw.Professional.vdCommandLine.CommandExecuteEventHandler(CommandLine_CommandExecute);
    Add this function to handle the above event:void CommandLine_CommandExecute(string commandname, bool isDefaultImplemented, ref bool success)
            {
                //Here we override every command after which we want the Redo stack cleared
                if (string.Compare(commandname, "line", true) == 0 || string.Compare(commandname, "l", true) == 0
                    || string.Compare(commandname, "rect", true) == 0 || string.Compare(commandname, "move", true) == 0)
                {
                    //Don’t set success to true, so that the execution of already implemented commands won’t stop after this function!
     
                    vdFramedControl1.BaseControl.ActiveDocument.UndoHistory.ClearRedoStack();
     
                    doc.Update();
                    doc.Invalidate();
                }
            }

        使用上面的代碼,每次您使用line,rect或move命令時(shí),都會(huì)清除重做堆棧。


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

    相關(guān)資料推薦:


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

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

    1561953111.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); })();