/// <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); }
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));
/// <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]; }