Пример #1
0
        /// <summary>
        /// 刷新图元绘制参数
        /// </summary>
        public override void Refresh()
        {
            // 初始化绘图数据管理对象
            graphSetting = GraphSetting.GetGraphSetting();

            // 刷新逻辑数据
            textRectangle.Location = location;
            textRectangle.Size     = elementSize;
        }
Пример #2
0
        /// <summary>
        /// 刷新图元绘制参数
        /// </summary>
        public override void Refresh()
        {
            // 初始化绘图数据管理对象
            graphSetting = GraphSetting.GetGraphSetting();

            // 刷新逻辑数据
            textRectangle.Location     = location + new Size(-(int)(elementSize.Width / 2), -(int)(elementSize.Height / 2));
            textRectangle.Size         = elementSize;
            activateRectangle.Location = location + new Size(-elementSize.Width, -elementSize.Height);
            activateRectangle.Size     = elementSize + elementSize;
        }
Пример #3
0
        /// <summary>
        /// 执行命令
        /// </summary>
        /// <param name="o">当前对象</param>
        /// <returns>是否执行成功</returns>
        public override bool Execute(object o)
        {
            bool success = true;

            object[]     args         = o as object[];
            int          id           = graphManager.AllocateGraphElementID();
            Point        p            = (Point)args[0];
            string       typeString   = args[1] as string;
            GraphSetting graphSetting = GraphSetting.GetGraphSetting();

            // 保存命令执行前的数据
            if (firstCommand) // 只有第一条命令保存执行前的数据
            {
                SaveBeforeExecute(flowChartManager.GetArguments());
            }

            switch (typeString)
            {
            case "ConditionNode":     // 条件结点
            {
                ConditionGraphElement conditionGraphElement = new ConditionGraphElement(p, graphSetting.ConditionNodeElementSize);
                InitSlotContainer(conditionGraphElement, id, "条件结点");

                break;
            }

            case "ActionNode":     // 动作结点
            {
                ActionGraphElement actionGraphElement = new ActionGraphElement(p, graphSetting.ActionNodeElementSize);
                InitSlotContainer(actionGraphElement, id, "动作结点");

                break;
            }

            case "EventNode":     // 事件结点
            {
                EventGraphElement eventGraphElement = new EventGraphElement(p, graphSetting.EventNodeElementSize);
                InitSlotContainer(eventGraphElement, id, "事件结点");

                break;
            }

            case "AIStateNode":     // ai状态结点
            {
                AIStateGraphElement aiStateGraphElement = new AIStateGraphElement(p, graphSetting.AIStateNodeElementSize);
                InitSlotContainer(aiStateGraphElement, id, "AI状态结点");

                break;
            }

            case "AIActionNode":     // ai动作结点
            {
                AIActionGraphElement aiActionGraphElement = new AIActionGraphElement(p, graphSetting.AIActionNodeElementSize);
                InitSlotContainer(aiActionGraphElement, id, "AI动作结点");

                break;
            }

            case "AIActionsNode":     // ai动作组结点
            {
                AIActionsGraphElement aiActionsGraphElement = new AIActionsGraphElement(p, graphSetting.AIActionsNodeElementSize);
                InitSlotContainer(aiActionsGraphElement, id, "AI动作组结点");

                break;
            }

            case "InnerChart":     // 子绘图结点
            {
                InnerChart innerChart = new InnerChart(p, graphSetting.InnerChartElementSize);
                InitSlotContainer(innerChart, id, "子绘图结点");

                break;
            }

            case "InterfaceNode":     // 接口结点
            {
                InterfaceGraphElement interfaceGraphElement = new InterfaceGraphElement(p, graphSetting.InterfaceNodeElementSize);
                InitSlotContainer(interfaceGraphElement, id, "接口结点");

                break;
            }
            }

            if (success) // 保存命令执行后的数据
            {
                flowChartManager.ContentChanged = true;
                SaveAfterExecute(flowChartManager.GetArguments());
            }

            return(success);
        }
Пример #4
0
        /// <summary>
        /// 初始化绘图参数
        /// </summary>
        protected virtual void InitGraphSetting()
        {
            GraphSetting graphSetting = GraphSetting.GetGraphSetting();

            graphSetting.GraphElementTextColor = Color.Black;
        }
Пример #5
0
        /// <summary>
        /// 初始化绘图参数
        /// </summary>
        protected override void InitGraphSetting()
        {
            GraphSetting graphSetting = GraphSetting.GetGraphSetting();

            graphSetting.GraphElementTextColor = Color.Yellow;
        }
Пример #6
0
        /// <summary>
        /// 绘图板鼠标滚动事件响应
        /// </summary>
        /// <param name="sender">事件发送者</param>
        /// <param name="e">事件</param>
        private void canvas_MouseWheel(object sender, MouseEventArgs e)
        {
            if (graphManager.ControlMode) // 绘图板缩放
            {
                return;                   // Control键的响应有问题,暂时屏蔽掉

                graphManager.CurrentCanvas.AutoScroll = false;

                if (e.Delta > 0)
                {
                    graphManager.AdjustCanvasScale(1.1f);
                }
                else
                {
                    graphManager.AdjustCanvasScale(0.9f);
                }

                DocumentManager.GetDocumentManager().RefreshCanvasScaleDisplay();
            }
            else
            {
                if (graphManager.ShiftMode) // 按shift键时横向滚动
                {
                    graphManager.CurrentCanvas.Visible = false;
                    Size moveSize = new Size(-e.Delta, e.Delta);                                                                                                                                                     // 垂直方向反向滚动一次
                    moveSize.Width  = (int)((double)moveSize.Width * graphManager.CurrentBackground.CanvasSize.Width / graphManager.CurrentCanvas.ClientSize.Width * GraphSetting.GetGraphSetting().CanvasScale);    // 滚动条的单位与绘图板单位需要转换
                    moveSize.Height = (int)((double)moveSize.Height * graphManager.CurrentBackground.CanvasSize.Height / graphManager.CurrentCanvas.ClientSize.Height * GraphSetting.GetGraphSetting().CanvasScale); // 滚动条的单位与绘图板单位需要转换
                    graphManager.ScrollCanvas(moveSize, false);
                    graphManager.CurrentCanvas.Visible = true;
                    graphManager.CurrentCanvas.Focus();
                }

                graphManager.CurrentCanvas.Refresh();
            }
        }