Пример #1
0
        private void ChartResize() // устанавливает границы представления по оси У
        {                          // вообще-то можно это автоматике доверить, но там вечно косяки какие-то, поэтому лучше самому следить за всеми осями
            try
            {
                if (CandleArray == null)
                {
                    return;
                }

                int startPozition = 0;                                                             // первая отображаемая свеча
                int endPozition   = chartForCandle.Series.FindByName("SeriesCandle").Points.Count; // последняя отображаемая свеча

                if (chartForCandle.ChartAreas[0].AxisX.ScrollBar.IsVisible == true)
                {// если уже выбран какой-то диапазон, назначаем первую и последнюю исходя из этого диапазона
                    startPozition = Convert.ToInt32(chartForCandle.ChartAreas.FindByName("ChartAreaCandle").AxisX.ScaleView.Position);
                    endPozition   = Convert.ToInt32(chartForCandle.ChartAreas.FindByName("ChartAreaCandle").AxisX.ScaleView.Position) +
                                    Convert.ToInt32(chartForCandle.ChartAreas.FindByName("ChartAreaCandle").AxisX.ScaleView.Size);
                }


                chartForCandle.ChartAreas.FindByName("ChartAreaCandle").AxisY2.Maximum = GetMaxValueOnChart(CandleArray, startPozition, endPozition);

                chartForCandle.ChartAreas.FindByName("ChartAreaCandle").AxisY2.Minimum = GetMinValueOnChart(CandleArray, startPozition, endPozition);

                chartForCandle.Refresh();
            }
            catch
            {
                return;
            }
        }
Пример #2
0
        private double RangeChanged(System.Windows.Forms.DataVisualization.Charting.Chart chart, string dataSeries, float[] data, long lowerIndex, long upperIndex, double newLowerFrequency, ref double graphBinFreqInc)
        {
            if (data.Length > 0)
            {
                long graphBinCount = upperIndex - lowerIndex;

                long lowerResGraphBinCount;

                if (graphBinCount > MAXIMUM_GRAPH_BIN_COUNT)
                {
                    lowerResGraphBinCount = MAXIMUM_GRAPH_BIN_COUNT;
                }
                else
                {
                    lowerResGraphBinCount = graphBinCount;
                }

                double inc = (double)graphBinCount / lowerResGraphBinCount;

                graphBinFreqInc = inc * binSize;

                double index = lowerIndex;

                double value;

                double binFrequency = newLowerFrequency;

                double minY = 9999, maxY = -9999;

                System.Windows.Forms.DataVisualization.Charting.DataPoint graphPoint;
                for (int i = 0; i < lowerResGraphBinCount; i++)
                {
                    value = data[(long)index];

                    if (Double.IsNaN(value) || value > 100 || value < -100)
                    {
                        value = -25;
                    }
                    else
                    {
                        if (i < chart.Series[dataSeries].Points.Count)
                        {
                            graphPoint = chart.Series[dataSeries].Points.ElementAt(i);
                            graphPoint.SetValueXY(i, value);
                            graphPoint.AxisLabel = (Math.Round((binFrequency / 1000000), 4)).ToString() + "MHz";
                        }
                        else
                        {
                            graphPoint           = new System.Windows.Forms.DataVisualization.Charting.DataPoint(i, value);
                            graphPoint.AxisLabel = (Math.Round((binFrequency / 1000000), 4)).ToString() + "MHz";
                            chart.Series[dataSeries].Points.Add(graphPoint);
                        }

                        if (value < minY)
                        {
                            minY = value;
                        }

                        if (value > maxY)
                        {
                            maxY = value;
                        }
                    }


                    index += inc;

                    binFrequency += graphBinFreqInc;
                }


                double avgStrength = 0;
                int    valueCount  = 0;

                for (long i = lowerIndex + 1; i < upperIndex; i++)
                {
                    value = data[i];

                    if (Double.IsNaN(value) || value > 100 || value < -100)
                    {
                        value = -25;
                    }
                    else
                    {
                        avgStrength += value;
                        valueCount++;
                    }
                }

                avgStrength /= valueCount;

                chart.Refresh();

                chart.ChartAreas[0].AxisX.ScaleView.Zoom(1, lowerResGraphBinCount - 1);

                if (dataSeries == "Series1" || dataSeries == "Series2")
                {
                    if (minY < chart.ChartAreas[0].AxisY.Minimum)
                    {
                        chart.ChartAreas[0].AxisY.Minimum = Math.Round(minY, 2);
                    }

                    if (maxY > chart.ChartAreas[0].AxisY.Maximum)
                    {
                        chart.ChartAreas[0].AxisY.Maximum = Math.Round(maxY, 2);
                    }
                }


                if (dataSeries == "Series1")
                {
                    textBox7.Text = avgStrength.ToString();
                }

                if (dataSeries == "Series2")
                {
                    textBox8.Text = avgStrength.ToString();
                }

                return(avgStrength);
            }

            return(0);
        }