Пример #1
0
        private void DrawGray()
        {
            double[] IntensityData        = NeuronDataManager.Neurons[0].IntensityCleanData.ToArray();
            int      L                    = NeuronDataManager.Neurons[0].IntensityCleanData.Count;
            int      N                    = NeuronDataManager.Neurons.Count;
            List <List <double> > AllData = GetNormalisedData();
            //List<List<List<PointD>>> TMP = GetNormalisedSparkles();


            GraphPane pane = ZDC_ColorMap.GraphPane;

            pane.CurveList.Clear();
            pane.XAxis.Scale.Max = L + 50;
            PointPairList list;
            LineItem      myCurve = new LineItem("");

            myCurve.Line.Width = 1.0F;
            double lambda;

            //Grays
            double [] indexes;
            int       Left  = 0;
            int       Right = 1;

            for (int i = 0; i < N; i++)
            {
                // точки до первой вспышки
                list = new PointPairList();
                myCurve.Line.Width = 2.0F;
                IntensityData      = AllData[i].ToArray();
                for (int k = 0; k <= NeuronDataManager.Neurons[i].SparkleIndexes[0][0]; k++)
                {
                    list.Add(k, IntensityData[k]);
                }
                list.Add(PointPairBase.Missing, PointPairBase.Missing);
                myCurve = pane.AddCurve("", list, Color.Gray, SymbolType.None);

                //

                lambda = i * (740 - 380) / N + 380;
                for (int j = 1; j < NeuronDataManager.Neurons[i].SparkleIndexes.Count; j++)
                {
                    myCurve.Line.Width = 1.0F;
                    list    = new PointPairList();
                    indexes = NeuronDataManager.Neurons[i].SparkleIndexes[j - 1];
                    Left    = (int)indexes[0];
                    Right   = (int)indexes[1];
                    for (int k = Left; k <= Right && (k < L); k++)
                    {
                        list.Add(k, IntensityData[k]);
                    }
                    list.Add(PointPairBase.Missing, PointPairBase.Missing);
                    myCurve = pane.AddCurve("", list, Colors.waveToColor(lambda), SymbolType.None);

                    myCurve.Line.Width = 2.0F;
                    list    = new PointPairList();
                    indexes = NeuronDataManager.Neurons[i].SparkleIndexes[j];
                    Left    = (int)indexes[0];
                    //Right = (int)indexes[0];
                    for (int k = Right + 1; k < Left && (k < L); k++)
                    {
                        list.Add(k, IntensityData[k]);
                    }
                    list.Add(PointPairBase.Missing, PointPairBase.Missing);
                    myCurve = pane.AddCurve("", list, Color.Gray, SymbolType.None);
                }
            }
            ZDC_ColorMap.AxisChange();
            ZDC_ColorMap.Invalidate();
        }