| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Collections.ObjectModel;
 
- using System.Linq;
 
- using System.Windows.Media;
 
- using MECF.Framework.UI.Client.ClientBase.Tree;
 
- using SciChart.Charting.Visuals.RenderableSeries;
 
- using SciChart.Data.Numerics;
 
- using DrawingColor = System.Drawing.Color;
 
- namespace MECF.Framework.UI.Client.ClientBase.Charting
 
- {
 
-     /// <summary>
 
-     /// 需要显示在图表中的项目列表。
 
-     /// </summary>
 
-     public class ChartingLineSeriesCollection : ObservableCollection<IRenderableSeries>
 
-     {
 
-         #region Variables
 
-         private Queue<Color> _colorQueue;
 
-         private readonly Random _colorRandom;
 
-         #endregion
 
-         #region Constructors
 
-         public ChartingLineSeriesCollection(string displayName)
 
-         {
 
-             _colorQueue = GetNewColorPatternQueue();
 
-             _colorRandom = new Random();
 
-             DisplayName = displayName;
 
-         }
 
-         #endregion
 
-         #region Properties
 
-         public string DisplayName { get; }
 
-         #endregion
 
-         #region Methods
 
-         /// <summary>
 
-         /// 获取颜色列队。
 
-         /// </summary>
 
-         /// <returns></returns>
 
-         private static Queue<Color> GetNewColorPatternQueue()
 
-         {
 
-             var colorList =  new List<DrawingColor>(new DrawingColor[]
 
-             {
 
-                 DrawingColor.Red, DrawingColor.Orange, DrawingColor.Yellow, DrawingColor.Green, DrawingColor.Blue,
 
-                 DrawingColor.Pink, DrawingColor.Purple, DrawingColor.Aqua,
 
-                 DrawingColor.Bisque, DrawingColor.Brown, DrawingColor.BurlyWood, DrawingColor.CadetBlue,
 
-                 DrawingColor.CornflowerBlue, DrawingColor.DarkBlue, DrawingColor.DarkCyan, DrawingColor.DarkGray,
 
-                 DrawingColor.DarkGreen, DrawingColor.DarkKhaki,
 
-                 DrawingColor.DarkMagenta, DrawingColor.DarkOliveGreen, DrawingColor.DarkOrange,
 
-                 DrawingColor.DarkSeaGreen, DrawingColor.DarkSlateBlue, DrawingColor.DarkSlateGray,
 
-                 DrawingColor.DarkViolet, DrawingColor.DeepPink,
 
-                 DrawingColor.DeepSkyBlue, DrawingColor.DimGray, DrawingColor.DodgerBlue, DrawingColor.ForestGreen,
 
-                 DrawingColor.Gold,
 
-                 DrawingColor.Gray, DrawingColor.GreenYellow, DrawingColor.HotPink, DrawingColor.Indigo,
 
-                 DrawingColor.Khaki, DrawingColor.LightBlue,
 
-                 DrawingColor.LightCoral, DrawingColor.LightGreen, DrawingColor.LightPink, DrawingColor.LightSalmon,
 
-                 DrawingColor.LightSkyBlue,
 
-                 DrawingColor.LightSlateGray, DrawingColor.LightSteelBlue, DrawingColor.LimeGreen,
 
-                 DrawingColor.MediumOrchid, DrawingColor.MediumPurple,
 
-                 DrawingColor.MediumSeaGreen, DrawingColor.MediumSlateBlue, DrawingColor.MediumSpringGreen,
 
-                 DrawingColor.MediumTurquoise, DrawingColor.Moccasin, DrawingColor.NavajoWhite, DrawingColor.Olive,
 
-                 DrawingColor.OliveDrab, DrawingColor.OrangeRed,
 
-                 DrawingColor.Orchid, DrawingColor.PaleGoldenrod, DrawingColor.PaleGreen,
 
-                 DrawingColor.PeachPuff, DrawingColor.Peru, DrawingColor.Plum, DrawingColor.PowderBlue,
 
-                 DrawingColor.RosyBrown, DrawingColor.RoyalBlue,
 
-                 DrawingColor.SaddleBrown, DrawingColor.Salmon, DrawingColor.SeaGreen, DrawingColor.Sienna,
 
-                 DrawingColor.SkyBlue, DrawingColor.SlateBlue, DrawingColor.SlateGray, DrawingColor.SpringGreen,
 
-                 DrawingColor.Teal, DrawingColor.Aquamarine,
 
-                 DrawingColor.Tomato, DrawingColor.Turquoise, DrawingColor.Violet, DrawingColor.Wheat,
 
-                 DrawingColor.YellowGreen
 
-             });
 
-             return new Queue<Color>(colorList.Select(x => Color.FromRgb(x.R, x.G, x.B)));
 
-         }
 
-         /// <summary>
 
-         /// 复位色板。
 
-         /// </summary>
 
-         /// <param name="isRandomColor"></param>
 
-         private void ResetColorQueue(bool isRandomColor = false)
 
-         {
 
-             if (isRandomColor)
 
-             {
 
-                 _colorQueue.Clear();
 
-                 for (var i = 0; i < 200; i++)
 
-                 {
 
-                     _colorQueue.Enqueue(Color.FromRgb( 
 
-                         (byte)_colorRandom.Next(0, 255),
 
-                         (byte)_colorRandom.Next(0, 255),
 
-                         (byte)_colorRandom.Next(0, 255)));
 
-                 }
 
-             }
 
-             else
 
-                 _colorQueue = GetNewColorPatternQueue();
 
-         }
 
-         /// <summary>
 
-         /// 从色板中获取一个颜色。
 
-         /// </summary>
 
-         /// <returns></returns>
 
-         private Color GetColor()
 
-         {
 
-             if (!_colorQueue.Any())
 
-                 ResetColorQueue();
 
-             var dc = _colorQueue.Dequeue();
 
-             return Color.FromRgb(dc.R, dc.G, dc.B);
 
-         }
 
-         /// <summary>
 
-         /// 重置图表序列的颜色。
 
-         /// </summary>
 
-         public void ResetColors()
 
-         {
 
-             ResetColorQueue();
 
-             foreach (var series in this)
 
-             {
 
-                 series.Stroke = GetColor();
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 追加新的查询数据到列表。
 
-         /// </summary>
 
-         /// <param name="collection"></param>
 
-         /// <param name="antiAliasing"></param>
 
-         /// <param name="resamplingMode"></param>
 
-         /// <returns>成功追加的项目。</returns>
 
-         public List<IRenderableSeries> Append(List<TreeNode> collection, bool antiAliasing = true,
 
-             ResamplingMode resamplingMode = ResamplingMode.MinMax)
 
-         {
 
-             var existed = this.Select(x => ((FastLineSeries)x).BackendParameterNode);
 
-             var toBeAdded = collection.Except(existed).ToList();
 
-             foreach (var node in toBeAdded)
 
-             {
 
-                 var line = new FastLineSeries(node.FullName)
 
-                 {
 
-                     AntiAliasing = antiAliasing,
 
-                     ResamplingMode = resamplingMode,
 
-                     BackendParameterNode = node
 
-                 };
 
-                 node.ClearStatistic();
 
-                 Add(line);
 
-             }
 
-             // 清除本次追加的曲线数据,否则不可添加新数据点。
 
-             var toBeCleaned = 
 
-                 this.Where(x =>
 
-                 collection.Select(t => t.FullName)
 
-                     .Contains(x.DataSeries.SeriesName))
 
-                     .Cast<FastLineSeries>()
 
-                     .ToList();
 
-             foreach (var line in toBeCleaned)
 
-             {
 
-                 line.DataSeries.Clear();
 
-                 line.BackendParameterNode?.ClearStatistic();
 
-             }
 
-             return toBeCleaned.Cast<IRenderableSeries>().ToList();
 
-         }
 
-         /// <summary>
 
-         /// 根据指定的<see cref="TreeNode"/>列表重新整理项目。
 
-         /// <para>该方法提供一种快速更新列表的方法,尽量避免DataGrid刷新造成的UI卡顿问题。</para>
 
-         /// </summary>a
 
-         /// <param name="collection"></param>
 
-         /// <param name="antiAliasing"></param>
 
-         /// <param name="resamplingMode"></param>
 
-         public void ReArrange(List<TreeNode> collection, bool antiAliasing = true,
 
-             ResamplingMode resamplingMode = ResamplingMode.MinMax)
 
-         {
 
-             // 剔除本次没有选择但存在于列表中的项目。
 
-             // 筛选本次选择并已存在于列表中的项目
 
-             var toBeKept = this.Where(x =>
 
-                 collection.Select(t => t.FullName).Contains(x.DataSeries.SeriesName));
 
-             // 删除本次没有选择的项目。
 
-             var toBeRemoved = this.Except(toBeKept).ToList();
 
-             foreach (var t in toBeRemoved)
 
-                 this.Remove(t);
 
-             // 筛选未存在于列表中的ParameterNode
 
-             var toBeAdded = collection
 
-                 .Except(collection.Where(x => this.Select(s => s.DataSeries.SeriesName).Contains(x.FullName))).ToList();
 
-             foreach (var node in toBeAdded)
 
-             {
 
-                 var line2D = new FastLineSeries(node.FullName)
 
-                 {
 
-                     AntiAliasing = antiAliasing,
 
-                     ResamplingMode = resamplingMode,
 
-                     BackendParameterNode = node
 
-                 };
 
-                 Add(line2D);
 
-             }
 
-             this.ToList().ForEach(x =>
 
-             {
 
-                 x.DataSeries.Clear();
 
-                 ((FastLineSeries)x)?.BackendParameterNode?.ClearStatistic();
 
-             });
 
-         }
 
-         public void SetFifoParam()
 
-         {
 
-             var dataSeries = this.Select(x => x.DataSeries).ToList();
 
-             
 
-         }
 
-         #endregion
 
-         #region Overrided Methods
 
-         protected override void InsertItem(int index, IRenderableSeries item)
 
-         {
 
-             if(item != null)
 
-                 item.Stroke = GetColor();
 
-             base.InsertItem(index, item);
 
-         }
 
-         #endregion
 
-     }
 
- }
 
 
  |