Пример #1
0
    /// <summary>
    /// create新的cell数据
    /// </summary>
    /// <param name="x">x的坐标</param>
    /// <param name="ld">y的坐标</param>
    /// <param name="dataIndex">datasource的索引</param>
    /// <returns></returns>
    public ShowCellData obtainShowCellData(float x, LineY ld, int dataIndex)
    {
        ShowCellData scd = new ShowCellData();

        scd.posX      = x;
        scd.ld        = ld;
        scd.dataIndex = dataIndex;
        return(scd);
    }
Пример #2
0
 public static PlotInfo Line(LineX x, LineY y, string stroke = null, double?thickness = null, LineTreatAs treatAs = null,
                             string fill68 = null, string fill95 = null, string displayName = null, LineTitles titles = null) =>
 Plot.line(x, y, Helpers.Opt(stroke), Helpers.Opt(thickness), Helpers.Opt(treatAs), Helpers.Opt(fill68), Helpers.Opt(fill95), Helpers.Opt(displayName), Helpers.Opt(titles));
Пример #3
0
        /// <summary>
        /// 显示路径初始化
        /// </summary>
        private void PathInit(List <char> routes)
        {
            PathClear();

            //清除走过路径的值
            _walkPathValues.Clear();

            var index = 0;

            //加入起点
            routes.Insert(0, 'x');
            for (var i = 0; i < routes.Count; i++)
            {
                var controls = groupBox1.Controls.Find("panel" + routes[i].ToString(), false);
                if (controls.Length == 0)
                {
                    throw new Exception("panel" + routes[i].ToString() + "的控件不存在!");
                }

                var panel = controls[0] as Panel;
                if (panel == null)
                {
                    throw new Exception("panel" + routes[i].ToString() + "的控件不存在!");
                }

                //panel的中心坐标
                var panelCenterPoint = new Point(panel.Left + panel.Width / 2, panel.Top + panel.Height / 2);

                //设置上一路径结束坐标
                if (i > 0)
                {
                    var previousShower = _showers[index - 1];
                    //x轴=当前节点的x轴
                    var endPoint = new Point(panel.Left + panel.Width / 2, previousShower.StartPoint.Y);
                    if (endPoint.X > previousShower.StartPoint.X)
                    {
                        //向右移动
                        previousShower.LeftOfRight = Direction.Right;
                    }
                    else
                    {
                        //向左移动
                        previousShower.LeftOfRight = Direction.Left;
                    }

                    previousShower.EndPoint = endPoint;
                }
                //不是最后节点
                if (i < routes.Count - 1)
                {
                    //竖线
                    var lineY = new LineY {
                        LineColor = Color.Red, LineWidth = 3, Width = 0, Height = 0
                    };
                    groupBox1.Controls.Add(lineY);
                    lineY.BringToFront();
                    var shower = new PathShower
                    {
                        PathName          = routes[i],
                        Index             = index++,
                        LineY             = lineY,
                        VerticalDirection = Direction.Vertical,
                        //到达位置
                        ArrivePoint = panelCenterPoint
                    };
                    if (i == 0)
                    {
                        shower.StartPoint = panelCenterPoint;
                    }
                    else
                    {
                        shower.StartPoint = _showers[index - 2].EndPoint;
                    }
                    lineY.Location      = shower.StartPoint;
                    shower.CurrentPoint = shower.StartPoint;
                    _showers.Add(shower);
                    //寻找节点框图底部的panel
                    Panel bottomPanel = null;
                    foreach (var ct in groupBox1.Controls)
                    {
                        var pnl = ct as Panel;
                        if (pnl != null && pnl.Name != "panel" + routes[i].ToString())
                        {
                            var pName = pnl.Name;
                            pName = pName.Replace("panel", "");
                            if (pName.Contains(routes[i]))
                            {
                                bottomPanel = pnl;
                            }
                        }
                    }

                    if (bottomPanel == null)
                    {
                        throw new Exception("未找到底部Panel!");
                    }

                    var bottomMiddle = bottomPanel.Top + bottomPanel.Height / 2;
                    //节点框图的结束坐标
                    shower.EndPoint = new Point(shower.StartPoint.X, bottomMiddle);

                    //添加横线
                    var lineX = new LineX {
                        LineColor = Color.Red, LineWidth = 3, Width = 0, Height = 3
                    };
                    groupBox1.Controls.Add(lineX);
                    lineX.BringToFront();

                    var bottomShower = new PathShower
                    {
                        PathName          = ' ',                  //路径名称为空字符
                        Index             = index++,
                        StartPoint        = shower.EndPoint,      //开始坐标等于上一路径的结束坐标
                        VerticalDirection = Direction.Horizontal, //水平方向移动
                        LineX             = lineX
                    };
                    lineX.Location            = bottomShower.StartPoint;
                    bottomShower.CurrentPoint = bottomShower.StartPoint;
                    _showers.Add(bottomShower);
                }
                else//最后一个节点
                {
                    //竖线
                    var lineY = new LineY {
                        LineColor = Color.Red, LineWidth = 3, Width = 0, Height = 0
                    };

                    groupBox1.Controls.Add(lineY);
                    lineY.BringToFront();

                    var shower = new PathShower
                    {
                        PathName          = routes[i],
                        Index             = index++,
                        LineY             = lineY,
                        VerticalDirection = Direction.Vertical,
                        StartPoint        = _showers[index - 2].EndPoint,
                        EndPoint          = panelCenterPoint,
                        //到达位置
                        ArrivePoint = panelCenterPoint
                    };
                    shower.CurrentPoint = shower.StartPoint;
                    lineY.Location      = shower.StartPoint;
                    _showers.Add(shower);
                }
            }

            _currentShower = _showers[0];
        }