示例#1
0
        private void InitializeChart()
        {
            this.RadChart1.LayoutUpdated += this.RadChart1_LayoutUpdated;

            var seriesMapping = GetLineSeries();
            RadChart1.SeriesMappings.Add(seriesMapping);

            RadChart1.Background = new SolidColorBrush(Colors.Transparent);
            RadChart1.DefaultView.ChartLegend.Visibility = Visibility.Collapsed;
            RadChart1.DefaultView.ChartArea.Padding= new Thickness(0);

            AxisX axisX = new AxisX()
                             {
                                 AutoRange = false,
                                 IsDateTime = true,
                                 Visibility = Visibility.Collapsed,
                                 MinValue = DateTime.Today.AddDays(-1).ToOADate(),
                                 MaxValue = DateTime.Today.AddDays(1).ToOADate()
                             };

            RadChart1.DefaultView.ChartArea.AxisX = axisX;

            AxisY axisY = new AxisY()
            {
                AutoRange = false,
                IsZeroBased = true,
                Visibility = Visibility.Collapsed,
                MinValue = 0,
                MaxValue = 4,
                StripLinesVisibility = Visibility.Collapsed
            };

            RadChart1.DefaultView.ChartArea.AxisY = axisY;
            RadChart1.ItemsSource = GetData();
        }
示例#2
0
        /// <summary>
        /// Destination coordinates are relative microsteps. delay is supplied as milliseconds to delay between steps.
        /// </summary>
        public void GotoNonLinear(int destinationX, int destinationY, int destinationZ, int delay, out string errorMessage)
        {
            errorMessage = "";

            int x = 0;
            int y = 0;
            int z = 0;

            int stepX;
            int stepY;
            int stepZ;

            // Set X Direction
            if (destinationX > 0)
            {
                stepX = 1;
                AxisX.StepDirection = true;
            }
            else
            {
                stepX = -1;
                AxisX.StepDirection = false;
            }

            // Set Y Direction
            if (destinationY > 0)
            {
                stepY = 1;
                AxisY.StepDirection = true;
            }
            else
            {
                stepY = -1;
                AxisY.StepDirection = false;
            }

            // Set Z Direction
            if (destinationZ > 0)
            {
                stepZ = 1;
                AxisZ.StepDirection = true;
            }
            else
            {
                stepZ = -1;
                AxisZ.StepDirection = false;
            }

            while (x != destinationX || y != destinationY || z != destinationZ)
            {
                if (Program.MotionInterrupt)
                {
                    if (!Program.Paused)
                    {
                        errorMessage = GetEStopErrorMessage();
                        return;
                    }
                }

                // Step X?
                if (x != destinationX)
                {
                    x += stepX;
                    AxisX.Step();
                }

                // Step Y?
                if (y != destinationY)
                {
                    y += stepY;
                    AxisY.Step();
                }

                // Step Z?
                if (z != destinationZ)
                {
                    z += stepZ;
                    AxisZ.Step();
                }
                DelayBy(delay);
            }
        }
示例#3
0
 private void ResetAxisOptions(AxisX xAxis)
 {
     xAxis.DateTimeScaleOptions.ScaleMode = ScaleMode.Continuous;
     xAxis.Label.TextPattern = "{A:MM/dd HH:mm}";
     xAxis.DateTimeScaleOptions.GridSpacing = 1;
     xAxis.Tickmarks.MinorVisible = false;
     xAxis.Label.Angle = -5;
     xAxis.DateTimeScaleOptions.AutoGrid = true;
 }
示例#4
0
        ///<inheritdoc/>
        public override void Redraw(Rect bounds)
        {
            if (CellSize.X == 0 || CellSize.Y == 0)
            {
                throw new Exception($"{nameof(CellSize)} cannot be 0");
            }

            SetDriverColorToGraphColor();

            Move(0, 0);

            // clear all old content
            for (int i = 0; i < Bounds.Height; i++)
            {
                Move(0, i);
                Driver.AddStr(new string (' ', Bounds.Width));
            }

            // If there is no data do not display a graph
            if (!Series.Any() && !Annotations.Any())
            {
                return;
            }

            // Draw 'before' annotations
            foreach (var a in Annotations.ToArray().Where(a => a.BeforeSeries))
            {
                a.Render(this);
            }

            SetDriverColorToGraphColor();

            AxisY.DrawAxisLine(this);
            AxisX.DrawAxisLine(this);

            AxisY.DrawAxisLabels(this);
            AxisX.DrawAxisLabels(this);

            // Draw a cross where the two axis cross
            var axisIntersection = new Point(AxisY.GetAxisXPosition(this), AxisX.GetAxisYPosition(this));

            if (AxisX.Visible && AxisY.Visible)
            {
                Move(axisIntersection.X, axisIntersection.Y);
                AddRune(axisIntersection.X, axisIntersection.Y, '\u253C');
            }

            SetDriverColorToGraphColor();

            // The drawable area of the graph (anything that isn't in the margins)
            Rect       drawBounds = new Rect((int)MarginLeft, 0, Bounds.Width - ((int)MarginLeft), Bounds.Height - (int)MarginBottom);
            RectangleF graphSpace = ScreenToGraphSpace(drawBounds);

            foreach (var s in Series.ToArray())
            {
                s.DrawSeries(this, drawBounds, graphSpace);

                // If a series changes the graph color reset it
                SetDriverColorToGraphColor();
            }

            SetDriverColorToGraphColor();

            // Draw 'after' annotations
            foreach (var a in Annotations.ToArray().Where(a => !a.BeforeSeries))
            {
                a.Render(this);
            }
        }
示例#5
0
        private async void DrawSpectrogram()
        {
            if (_bitmap == null)
            {
                return;
            }

            // stop here if a drawing operation is already in progress
            if (_isDrawing)
            {
                _isRequested = true;
                return;
            }

            // set the drawing flag
            _isDrawing = true;

            // preprocess the data to draw
            var mapped  = Data.Where(p => p.Y is double[]).Select(p => new Tuple <double, double[]>(AxisX.GetItemPixel(p.X), (double[])p.Y)).OrderBy(p => p.Item1).ToList();
            var palette = ColorPalette;

            // lock the backbuffer
            var bitmap = _bitmap;

            bitmap.Lock();
            var width      = bitmap.PixelWidth;
            var height     = bitmap.PixelHeight;
            var stride     = bitmap.BackBufferStride;
            var backbuffer = bitmap.BackBuffer;

            // fill the backbuffer from a background thread
            await Task.Run(() =>
            {
                // map data points to axis pixels
                if (mapped.Count > 0)
                {
                    var rows         = mapped.First().Item2.Length;
                    var rowHeight    = height / (double)rows;
                    var maximumValue = mapped.Aggregate(new double[rows], (c, p) =>
                    {
                        for (var i = 0; i < c.Length; i++)
                        {
                            c[i] = Math.Max(c[i], p.Item2[i]);
                        }
                        return(c);
                    });

                    // iterate over all pixels in the series
                    var lastColumn = 0;
                    var nextColumn = 1;
                    for (var x = 0.0; x < width; x++)
                    {
                        // find the next data column
                        while (nextColumn < mapped.Count - 1 && x > mapped[nextColumn].Item1)
                        {
                            lastColumn  = nextColumn;
                            nextColumn += 1;
                        }

                        // calculate the horizontal relative position in between the two columns
                        var factorX = (x - mapped[lastColumn].Item1) / (mapped[nextColumn].Item1 - mapped[lastColumn].Item1);

                        // draw the column
                        var lastRow = 0;
                        var nextRow = 1;
                        for (var y = 0.0; y < height; y++)
                        {
                            // find the next data row
                            while (nextRow < mapped[nextColumn].Item2.Length - 1 && y > nextRow * rowHeight)
                            {
                                lastRow  = nextRow;
                                nextRow += 1;
                            }

                            // calculate the horizontal relative position in between the two rows
                            var factorY = (y - lastRow * rowHeight) / rowHeight;

                            // interpolate the point value
                            double c;
                            if (factorX >= 0 && factorX <= 1 && factorY >= 0 && factorY <= 1)
                            {
                                var a00 = mapped[lastColumn].Item2[lastRow];
                                var a10 = mapped[nextColumn].Item2[lastRow] - mapped[lastColumn].Item2[lastRow];
                                var a01 = mapped[lastColumn].Item2[nextRow] - mapped[lastColumn].Item2[lastRow];
                                var a11 = mapped[nextColumn].Item2[nextRow] + mapped[lastColumn].Item2[lastRow] - (mapped[nextColumn].Item2[lastRow] + mapped[lastColumn].Item2[nextRow]);
                                c       = a00 + a10 * factorX + a01 * factorY + a11 * factorX * factorY;
                            }
                            else
                            {
                                c = 0;
                            }

                            // scale the pixel value to 0..1
                            var scaledMaximum = factorY * (maximumValue[nextRow] - maximumValue[lastRow]) + maximumValue[lastRow];
                            var scaledValue   = scaledMaximum > 1e-3 ? c / scaledMaximum : 0;

                            // get the color for the pixel
                            var color = palette[(int)(scaledValue * (palette.Count - 1))];

                            // draw the pixel
                            var value = (byte)(255 * scaledValue);
                            unsafe
                            {
                                var address  = (byte *)(backbuffer + ((int)(height - 1 - y) * stride) + (int)x * 4);
                                *(address++) = color.B;
                                *(address++) = color.G;
                                *(address++) = color.R;
                                *(address++) = color.A;
                            }
                        }
                    }
                }
                else
                {
                    var color = palette[0];
                    for (var i = 0; i < width *height * 4; i += 4)
                    {
                        unsafe
                        {
                            var address  = (byte *)(backbuffer + i);
                            *(address++) = color.B;
                            *(address++) = color.G;
                            *(address++) = color.R;
                            *(address++) = color.A;
                        }
                    }
                }
            });

            // write the bitmap contents
            bitmap.AddDirtyRect(new Int32Rect(0, 0, width, height));
            bitmap.Unlock();

            // invalidate visuals to redraw
            _isDrawing = false;
            InvalidateVisual();

            if (_isRequested)
            {
                _isRequested = false;
                DrawSpectrogram();
            }
        }
示例#6
0
        public WaveformMonitor(Color lineColor, string title = "")
        {
            SampleFrequency = 0.0;

            ContainerChart = new LightningChartUltimate
            {
                Name                = "Chart1",
                ChartName           = "Chart1",
                Title               = { Text = title },
                VerticalAlignment   = VerticalAlignment.Stretch,
                HorizontalAlignment = HorizontalAlignment.Stretch
            };

            ContainerChart.BeginUpdate();

            ContainerChart.ViewXY.AxisLayout.AutoAdjustMargins = true;
            ContainerChart.ViewXY.DropOldSeriesData            = false;

            _xAxis                           = ContainerChart.ViewXY.XAxes[0];
            _xAxis.ValueType                 = AxisValueType.Number;
            _xAxis.SweepingGap               = 2;
            _xAxis.ScrollMode                = XAxisScrollMode.None;
            _xAxis.Title.Visible             = false;
            _xAxis.Title.Text                = "Range";
            _xAxis.Title.VerticalAlign       = XAxisTitleAlignmentVertical.Top;
            _xAxis.Title.HorizontalAlign     = XAxisTitleAlignmentHorizontal.Right;
            _xAxis.LabelsPosition            = Alignment.Near;
            _xAxis.LabelsFont                = new WPFFont("Tahoma", 9.0, "9", true, false);
            _xAxis.MajorDivTickStyle.Visible = true;
            _xAxis.MinorDivTickStyle.Visible = true;
            _xAxis.MajorGrid.Visible         = true;
            _xAxis.MinorGrid.Visible         = true;
            _xAxis.LabelsVisible             = true;
            _xAxis.SteppingInterval          = 1;
            _xAxis.MouseScaling              = false;
            _xAxis.MouseScrolling            = false;
            _xAxis.MouseInteraction          = false;
            _xAxis.AxisThickness             = 1;

            var axisY = ContainerChart.ViewXY.YAxes[0];

            axisY.SetRange(0, 30000);
            axisY.Title.Visible = false;
            axisY.LabelsFont    = new WPFFont("Tahoma", 9.0, "9", true, false);

            ContainerChart.ViewXY.GraphBackground.GradientDirection = 270;
            ContainerChart.ViewXY.GraphBackground.GradientFill      = GradientFill.Cylindrical;

            var color = ContainerChart.ViewXY.GraphBackground.Color;

            ContainerChart.ViewXY.GraphBackground.Color = Color.FromArgb(150, color.R, color.G, color.B);

            ContainerChart.Title.Font = new WPFFont("Tahoma", 11.0, "11", true, false);

            ContainerChart.Title.Align = ChartTitleAlignment.TopCenter;
            ContainerChart.Title.Offset.SetValues(0, 25);
            ContainerChart.Title.Color = lineColor;

            ContainerChart.ViewXY.Margins = new Thickness(70, 10, 15, 10);
            ContainerChart.ViewXY.ZoomPanOptions.ZoomRectLine.Color = Colors.Lime;

            ContainerChart.ChartBackground.Color             = ChartTools.CalcGradient(lineColor, Colors.Black, 65);
            ContainerChart.ChartBackground.GradientDirection = 0;
            ContainerChart.ChartBackground.GradientFill      = GradientFill.Cylindrical;

            ContainerChart.ViewXY.LegendBox.Visible = false;

            var series = new SampleDataSeries(ContainerChart.ViewXY, _xAxis, axisY)
            {
                LineStyle =
                {
                    Width        =        1f,
                    Color        = lineColor,
                    AntiAliasing = LineAntialias.None
                },
                MouseInteraction = false
            };

            ContainerChart.ViewXY.SampleDataSeries.Add(series);

            ContainerChart.EndUpdate();
        }
        private void CreateChart()
        {
            gridChart.Children.Clear();
            if (m_chart != null)
            {
                m_chart.Dispose();
                m_chart = null;
            }

            //Create new chart
            m_chart = new LightningChartUltimate();

            //Disable rendering, strongly recommended before updating chart properties
            m_chart.BeginUpdate();
            m_chart.Title.Visible = false;

            m_chart.Background                          = new SolidColorBrush(Color.FromArgb(0, 0, 0, 0));
            m_chart.ChartBackground.Color               = Color.FromArgb(0, 0, 0, 0);
            m_chart.ChartBackground.GradientFill        = GradientFill.Solid;
            m_chart.ViewXY.GraphBackground.Color        = Color.FromArgb(0, 0, 0, 0);
            m_chart.ViewXY.GraphBackground.GradientFill = GradientFill.Solid;
            m_chart.ViewXY.GraphBorderColor             = Color.FromArgb(0, 0, 0, 0);

            m_chart.ViewXY.XAxes[0].Title.Visible     = false;
            m_chart.ViewXY.XAxes[0].MinorGrid.Visible = false;
            m_chart.ViewXY.XAxes[0].AxisThickness     = 2;
            m_chart.ViewXY.XAxes[0].AxisColor         = Color.FromArgb(0xff, 0xff, 0xff, 0xff);//Color.FromArgb(100, 135, 205, 238);
            m_chart.ViewXY.XAxes[0].MinorGrid.Visible = false;
            m_chart.ViewXY.XAxes[0].LabelsFont        = new WpfFont(System.Drawing.FontFamily.GenericSansSerif, 9, System.Drawing.FontStyle.Regular);

            m_chart.ViewXY.YAxes[0].Title.Visible = false;

            // Configure x-axis.
            AxisX axisX = m_chart.ViewXY.XAxes[0];

            axisX.ScrollMode = XAxisScrollMode.None;
            axisX.ValueType  = AxisValueType.Number;

            //Add annotation as selection box
            AnnotationXY box = new AnnotationXY(m_chart.ViewXY, axisX, m_chart.ViewXY.YAxes[0]);

            box.Style               = AnnotationStyle.Rectangle;
            box.RotateByMouse       = false;
            box.AnchorAdjustByMouse = false;
            box.TargetMoveByMouse   = false;
            box.Behind              = false;
            box.Fill.Color          = Color.FromArgb(50, 255, 165, 0);
            box.Fill.GradientColor  = Color.FromArgb(50, 255, 140, 0);
            box.Shadow.Visible      = false;
            box.TextStyle.Visible   = false;
            box.Sizing              = AnnotationXYSizing.AxisValuesBoundaries;
            box.ResizedByMouse     += box_ResizedByMouse;
            box.MovedByMouse       += box_MovedByMouse;
            box.AxisValuesBoundaries.SetValues(0, 100, 0, 100);
            box.NibStyle.Color = Colors.Yellow;
            m_chart.ViewXY.Annotations.Add(box);

            //Create annotation for showing the nearest point info
            AnnotationXY annot = new AnnotationXY(m_chart.ViewXY, m_chart.ViewXY.XAxes[0], m_chart.ViewXY.YAxes[0]);

            annot.Fill.Color             = Color.FromArgb(180, 30, 30, 30);
            annot.Fill.GradientFill      = GradientFill.Solid;
            annot.BorderLineStyle.Color  = Color.FromArgb(50, 255, 255, 255);
            annot.Shadow.Visible         = false;
            annot.TargetCoordinateSystem = AnnotationTargetCoordinates.AxisValues;
            annot.Visible                  = false; //Don't show before the data point has been found
            annot.MouseInteraction         = false;
            annot.LocationCoordinateSystem = CoordinateSystem.RelativeCoordinatesToTarget;
            annot.LocationRelativeOffset.X = 0;
            annot.LocationRelativeOffset.Y = -40;
            annot.TextStyle.Color          = Colors.White;
            annot.Style = AnnotationStyle.Rectangle;
            m_chart.ViewXY.Annotations.Add(annot);

            m_chart.ViewXY.LegendBoxes[0].Visible        = true;
            m_chart.ViewXY.LegendBoxes[0].Layout         = LegendBoxLayout.VerticalColumnSpan;
            m_chart.ViewXY.LegendBoxes[0].Fill.Style     = RectFillStyle.None;
            m_chart.ViewXY.LegendBoxes[0].Shadow.Visible = false;
            m_chart.ViewXY.LegendBoxes[0].BorderWidth    = 0;
            m_chart.ViewXY.LegendBoxes[0].Position       = LegendBoxPositionXY.TopRight;
            m_chart.ViewXY.LegendBoxes[0].Offset.SetValues(-80, 10);
            m_chart.ViewXY.LegendBoxes[0].SeriesTitleFont = new WpfFont(System.Drawing.FontFamily.GenericSansSerif, 9, System.Drawing.FontStyle.Regular);

            //Add a series
            //AddSeries();

            //UpdatePointColors();

            m_chart.ViewXY.ZoomToFit();

            m_chart.MouseMove += new MouseEventHandler(m_chart_MouseMove);

            //Allow chart rendering
            m_chart.EndUpdate();

            gridChart.Children.Add(m_chart);

            showCheckBox.Checked   += showCheckBox_Checked;
            showCheckBox.Unchecked += showCheckBox_Checked;
        }
示例#8
0
        /// <summary>
        /// 将数据加载到图表中
        /// </summary>
        private void Chart_Load()
        {
            int[,] EctractPointChartx = new int[3, 4] {
                { 1, 2, 3, 4 }, { 1, 2, 3, 4 }, { 1, 2, 3, 4 }
            };                                                                                        //x轴标记
            string[] CompressionRatiox = new string[] { "OneTenth", "OneFifteenth", "OneTwentieth" }; //x轴标记
            string[,] SynchronizeChartx = new string[3, 4] {
                { "10-1", "10-2", "10-3", "10-4" }, { "15-1", "15-2", "15-3", "15-4" }, { "20-1", "20-2", "20-3", "20-4" }
            };                                                                                                                                                            //x轴标记

            #region 柱状图
            //添加 图表标题
            EctractPointChart.Titles.Add(new ChartTitle());
            EctractPointChart.Titles[0].Text = "提点测试";
            EctractPointChart.Titles[0].Font = new Font("Times New Roman", 9f, FontStyle.Bold);

            //控件背景
            EctractPointChart.BackColor = Color.Transparent;
            //图表区背景
            EctractPointChart.BackColor   = Color.Transparent;
            EctractPointChart.BorderColor = Color.Transparent;

            //Access the diagram's properties.把 Diagram 对象转换为所需的图象类型
            XYDiagram EctractPointChartdiagram = (XYDiagram)EctractPointChart.Diagram;
            EctractPointChartdiagram.Rotated    = false;                                //图像是否旋转
            EctractPointChart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True; //是否在图表上显示图例

            //// Customize the appearance of the X-axis title.调整 X-轴
            AxisX EctractPointChartxAxis = EctractPointChartdiagram.AxisX;                   //获取X轴
            EctractPointChartxAxis.Alignment         = AxisAlignment.Near;                   //指定轴相对于另一主轴的位置。属性 AxisAlignment.Zero 设置仅对主轴可用
            EctractPointChartxAxis.Title.Text        = "拼图数";                                //设置轴标题
            EctractPointChartxAxis.Title.Font        = new Font("Times New Roman", 9f);
            EctractPointChartxAxis.Title.Visibility  = DevExpress.Utils.DefaultBoolean.True; //是否显示轴标题
            EctractPointChartxAxis.Label.TextPattern = "";

            //绑定数据,ExtractPointSpeedArray数组存放提点速度数据。
            EctractPointChart.Series[0].Points.AddPoint(EctractPointChartx[0, 0], Form1.ExtractPointSpeedArray[0]);
            EctractPointChart.Series[0].Points[0].Color = Color.DodgerBlue;
            EctractPointChart.Series[0].Points.AddPoint(EctractPointChartx[0, 1], Form1.ExtractPointSpeedArray[3]);
            EctractPointChart.Series[0].Points[1].Color = Color.DodgerBlue;
            EctractPointChart.Series[0].Points.AddPoint(EctractPointChartx[0, 2], Form1.ExtractPointSpeedArray[6]);
            EctractPointChart.Series[0].Points[2].Color = Color.DodgerBlue;
            EctractPointChart.Series[0].Points.AddPoint(EctractPointChartx[0, 3], Form1.ExtractPointSpeedArray[9]);
            EctractPointChart.Series[0].Points[3].Color = Color.DodgerBlue;
            EctractPointChart.Series[1].Points.AddPoint(EctractPointChartx[1, 0], Form1.ExtractPointSpeedArray[1]);
            EctractPointChart.Series[1].Points[0].Color = Color.IndianRed;
            EctractPointChart.Series[1].Points.AddPoint(EctractPointChartx[1, 1], Form1.ExtractPointSpeedArray[4]);
            EctractPointChart.Series[1].Points[1].Color = Color.IndianRed;
            EctractPointChart.Series[1].Points.AddPoint(EctractPointChartx[1, 2], Form1.ExtractPointSpeedArray[7]);
            EctractPointChart.Series[1].Points[2].Color = Color.IndianRed;
            EctractPointChart.Series[1].Points.AddPoint(EctractPointChartx[1, 3], Form1.ExtractPointSpeedArray[10]);
            EctractPointChart.Series[1].Points[3].Color = Color.IndianRed;
            EctractPointChart.Series[2].Points.AddPoint(EctractPointChartx[2, 0], Form1.ExtractPointSpeedArray[2]);
            EctractPointChart.Series[2].Points[0].Color = Color.OliveDrab;
            EctractPointChart.Series[2].Points.AddPoint(EctractPointChartx[2, 1], Form1.ExtractPointSpeedArray[5]);
            EctractPointChart.Series[2].Points[1].Color = Color.OliveDrab;
            EctractPointChart.Series[2].Points.AddPoint(EctractPointChartx[2, 2], Form1.ExtractPointSpeedArray[8]);
            EctractPointChart.Series[2].Points[2].Color = Color.OliveDrab;
            EctractPointChart.Series[2].Points.AddPoint(EctractPointChartx[2, 3], Form1.ExtractPointSpeedArray[11]);
            EctractPointChart.Series[2].Points[3].Color = Color.OliveDrab;

            #endregion

            #region 柱状图
            //添加 图表标题
            CompressionChart.Titles.Add(new ChartTitle());
            CompressionChart.Titles[0].Text = "压缩测试";
            CompressionChart.Titles[0].Font = new Font("Times New Roman", 9f, FontStyle.Bold);

            //控件背景
            CompressionChart.BackColor = Color.Transparent;
            //图表区背景
            CompressionChart.BackColor   = Color.Transparent;
            CompressionChart.BorderColor = Color.Transparent;

            // Access the diagram's properties.把 Diagram 对象转换为所需的图象类型
            XYDiagram diagram = (XYDiagram)CompressionChart.Diagram;
            diagram.Rotated = false;                                                   //图像是否旋转
            CompressionChart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True; //是否在图表上显示图例

            //// Customize the appearance of the X-axis title.调整 X-轴
            AxisX xAxis = diagram.AxisX;                                    //获取X轴
            xAxis.Alignment         = AxisAlignment.Near;                   //指定轴相对于另一主轴的位置。属性 AxisAlignment.Zero 设置仅对主轴可用
            xAxis.Title.Text        = "压缩比";                                //设置轴标题
            xAxis.Title.Font        = new Font("Times New Roman", 9f);
            xAxis.Title.Visibility  = DevExpress.Utils.DefaultBoolean.True; //是否显示轴标题
            xAxis.Label.TextPattern = "";

            //绑定数据,CompressionSpeedArray数组存放压缩速度数据。
            CompressionChart.Series[0].Points.AddPoint(CompressionRatiox[0], Form1.CompressionSpeedArray[0] * 2);
            CompressionChart.Series[0].Points[0].Color = Color.CornflowerBlue;
            CompressionChart.Series[0].Points.AddPoint(CompressionRatiox[1], Form1.CompressionSpeedArray[1] * 2);
            CompressionChart.Series[0].Points[1].Color = Color.CornflowerBlue;
            CompressionChart.Series[0].Points.AddPoint(CompressionRatiox[2], Form1.CompressionSpeedArray[2] * 2);
            CompressionChart.Series[0].Points[2].Color = Color.CornflowerBlue;

            #endregion

            #region 柱状图
            //添加 图表标题
            SynchronizeChart.Titles.Add(new ChartTitle());
            SynchronizeChart.Titles[0].Text = "同步提点压缩测试";
            SynchronizeChart.Titles[0].Font = new Font("Times New Roman", 9f, FontStyle.Bold);

            //控件背景
            SynchronizeChart.BackColor = Color.Transparent;
            //图表区背景
            SynchronizeChart.BackColor   = Color.Transparent;
            SynchronizeChart.BorderColor = Color.Transparent;

            // Access the diagram's properties.把 Diagram 对象转换为所需的图象类型
            XYDiagram Synchronizediagram = (XYDiagram)SynchronizeChart.Diagram;
            Synchronizediagram.Rotated         = false;                                //图像是否旋转
            SynchronizeChart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True; //是否在图表上显示图例

            //// Customize the appearance of the X-axis title.调整 X-轴
            AxisX SynchronizexAxis = Synchronizediagram.AxisX;                         //获取X轴
            SynchronizexAxis.Alignment         = AxisAlignment.Near;                   //指定轴相对于另一主轴的位置。属性 AxisAlignment.Zero 设置仅对主轴可用
            SynchronizexAxis.Title.Text        = "拼图数&压缩比";                            //设置轴标题
            SynchronizexAxis.Title.Font        = new Font("Times New Roman", 9f);
            SynchronizexAxis.Title.Visibility  = DevExpress.Utils.DefaultBoolean.True; //是否显示轴标题
            SynchronizexAxis.Label.TextPattern = "";

            //绑定数据,SynchronizeSpeedArray数组存放同步提点压缩速度数据。
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[0, 0], Form1.SynchronizeSppedArray[0]);
            SynchronizeChart.Series[0].Points[0].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[0, 1], Form1.SynchronizeSppedArray[3]);
            SynchronizeChart.Series[0].Points[1].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[0, 2], Form1.SynchronizeSppedArray[6]);
            SynchronizeChart.Series[0].Points[2].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[0, 3], Form1.SynchronizeSppedArray[9]);
            SynchronizeChart.Series[0].Points[3].Color = Color.DodgerBlue;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[0, 0], Form1.SynchronizeSppedArray[1]);
            SynchronizeChart.Series[1].Points[0].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[0, 1], Form1.SynchronizeSppedArray[4]);
            SynchronizeChart.Series[1].Points[1].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[0, 2], Form1.SynchronizeSppedArray[7]);
            SynchronizeChart.Series[1].Points[2].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[0, 3], Form1.SynchronizeSppedArray[10]);
            SynchronizeChart.Series[1].Points[3].Color = Color.IndianRed;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[0, 0], Form1.SynchronizeSppedArray[2]);
            SynchronizeChart.Series[2].Points[0].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[0, 1], Form1.SynchronizeSppedArray[5]);
            SynchronizeChart.Series[2].Points[1].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[0, 2], Form1.SynchronizeSppedArray[8]);
            SynchronizeChart.Series[2].Points[2].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[0, 3], Form1.SynchronizeSppedArray[11]);
            SynchronizeChart.Series[2].Points[3].Color = Color.OliveDrab;

            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[1, 0], Form1.SynchronizeSppedArray[12]);
            SynchronizeChart.Series[0].Points[0].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[1, 1], Form1.SynchronizeSppedArray[15]);
            SynchronizeChart.Series[0].Points[1].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[1, 2], Form1.SynchronizeSppedArray[18]);
            SynchronizeChart.Series[0].Points[2].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[1, 3], Form1.SynchronizeSppedArray[21]);
            SynchronizeChart.Series[0].Points[3].Color = Color.DodgerBlue;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[1, 0], Form1.SynchronizeSppedArray[13]);
            SynchronizeChart.Series[1].Points[0].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[1, 1], Form1.SynchronizeSppedArray[16]);
            SynchronizeChart.Series[1].Points[1].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[1, 2], Form1.SynchronizeSppedArray[19]);
            SynchronizeChart.Series[1].Points[2].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[1, 3], Form1.SynchronizeSppedArray[22]);
            SynchronizeChart.Series[1].Points[3].Color = Color.IndianRed;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[1, 0], Form1.SynchronizeSppedArray[14]);
            SynchronizeChart.Series[2].Points[0].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[1, 1], Form1.SynchronizeSppedArray[17]);
            SynchronizeChart.Series[2].Points[1].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[1, 2], Form1.SynchronizeSppedArray[20]);
            SynchronizeChart.Series[2].Points[2].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[1, 3], Form1.SynchronizeSppedArray[23]);
            SynchronizeChart.Series[2].Points[3].Color = Color.OliveDrab;

            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[2, 0], Form1.SynchronizeSppedArray[24]);
            SynchronizeChart.Series[0].Points[0].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[2, 1], Form1.SynchronizeSppedArray[27]);
            SynchronizeChart.Series[0].Points[1].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[2, 2], Form1.SynchronizeSppedArray[30]);
            SynchronizeChart.Series[0].Points[2].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[2, 3], Form1.SynchronizeSppedArray[33]);
            SynchronizeChart.Series[0].Points[3].Color = Color.DodgerBlue;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[2, 0], Form1.SynchronizeSppedArray[25]);
            SynchronizeChart.Series[1].Points[0].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[2, 1], Form1.SynchronizeSppedArray[28]);
            SynchronizeChart.Series[1].Points[1].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[2, 2], Form1.SynchronizeSppedArray[31]);
            SynchronizeChart.Series[1].Points[2].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[2, 3], Form1.SynchronizeSppedArray[34]);
            SynchronizeChart.Series[1].Points[3].Color = Color.IndianRed;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[2, 0], Form1.SynchronizeSppedArray[26]);
            SynchronizeChart.Series[2].Points[0].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[2, 1], Form1.SynchronizeSppedArray[29]);
            SynchronizeChart.Series[2].Points[1].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[2, 2], Form1.SynchronizeSppedArray[32]);
            SynchronizeChart.Series[2].Points[2].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[2, 3], Form1.SynchronizeSppedArray[35]);
            SynchronizeChart.Series[2].Points[3].Color = Color.OliveDrab;

            #endregion
        }
示例#9
0
        /// <summary>
        /// 将数据加载到图表中
        /// </summary>
        private void Chart_Load(int test)
        {
            int[,] EctractPointChartx = new int[3, 4] {
                { 1, 2, 3, 4 }, { 1, 2, 3, 4 }, { 1, 2, 3, 4 }
            };                                                                                        //x轴标记
            string[] CompressionRatiox = new string[] { "OneTenth", "OneFifteenth", "OneTwentieth" }; //x轴标记
            string[,] SynchronizeChartx = new string[3, 4] {
                { "10-1", "10-2", "10-3", "10-4" }, { "15-1", "15-2", "15-3", "15-4" }, { "20-1", "20-2", "20-3", "20-4" }
            };                                                                                                                                                            //x轴标记

            #region 柱状图
            //添加 图表标题
            EctractPointChart.Titles.Add(new ChartTitle());
            EctractPointChart.Titles[0].Text = "提点测试";
            EctractPointChart.Titles[0].Font = new Font("Times New Roman", 9f, FontStyle.Bold);

            //控件背景
            EctractPointChart.BackColor = Color.Transparent;
            //图表区背景
            EctractPointChart.BackColor   = Color.Transparent;
            EctractPointChart.BorderColor = Color.Transparent;

            //Access the diagram's properties.把 Diagram 对象转换为所需的图象类型
            XYDiagram EctractPointChartdiagram = (XYDiagram)EctractPointChart.Diagram;
            EctractPointChartdiagram.Rotated    = false;                                //图像是否旋转
            EctractPointChart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True; //是否在图表上显示图例

            //// Customize the appearance of the X-axis title.调整 X-轴
            AxisX EctractPointChartxAxis = EctractPointChartdiagram.AxisX;                   //获取X轴
            EctractPointChartxAxis.Alignment         = AxisAlignment.Near;                   //指定轴相对于另一主轴的位置。属性 AxisAlignment.Zero 设置仅对主轴可用
            EctractPointChartxAxis.Title.Text        = "拼图数";                                //设置轴标题
            EctractPointChartxAxis.Title.Font        = new Font("Times New Roman", 9f);
            EctractPointChartxAxis.Title.Visibility  = DevExpress.Utils.DefaultBoolean.True; //是否显示轴标题
            EctractPointChartxAxis.Label.TextPattern = "";

            //绑定数据,ExtractPointSpeedArray数组存放提点速度数据。
            EctractPointChart.Series[0].Points.AddPoint(EctractPointChartx[0, 0], 3227.235);
            EctractPointChart.Series[0].Points[0].Color = Color.DodgerBlue;
            EctractPointChart.Series[0].Points.AddPoint(EctractPointChartx[0, 1], 3347.281);
            EctractPointChart.Series[0].Points[1].Color = Color.DodgerBlue;
            EctractPointChart.Series[0].Points.AddPoint(EctractPointChartx[0, 2], 3571.429);
            EctractPointChart.Series[0].Points[2].Color = Color.DodgerBlue;
            EctractPointChart.Series[0].Points.AddPoint(EctractPointChartx[0, 3], 3611.738);
            EctractPointChart.Series[0].Points[3].Color = Color.DodgerBlue;
            EctractPointChart.Series[1].Points.AddPoint(EctractPointChartx[1, 0], 4002.324);
            EctractPointChart.Series[1].Points[0].Color = Color.IndianRed;
            EctractPointChart.Series[1].Points.AddPoint(EctractPointChartx[1, 1], 4166.667);
            EctractPointChart.Series[1].Points[1].Color = Color.IndianRed;
            EctractPointChart.Series[1].Points.AddPoint(EctractPointChartx[1, 2], 4651.163);
            EctractPointChart.Series[1].Points[2].Color = Color.IndianRed;
            EctractPointChart.Series[1].Points.AddPoint(EctractPointChartx[1, 3], 4532.521);
            EctractPointChart.Series[1].Points[3].Color = Color.IndianRed;
            EctractPointChart.Series[2].Points.AddPoint(EctractPointChartx[2, 0], 4526.245);
            EctractPointChart.Series[2].Points[0].Color = Color.OliveDrab;
            EctractPointChart.Series[2].Points.AddPoint(EctractPointChartx[2, 1], 5063.291);
            EctractPointChart.Series[2].Points[1].Color = Color.OliveDrab;
            EctractPointChart.Series[2].Points.AddPoint(EctractPointChartx[2, 2], 5504.587);
            EctractPointChart.Series[2].Points[2].Color = Color.OliveDrab;
            EctractPointChart.Series[2].Points.AddPoint(EctractPointChartx[2, 3], 5194.805);
            EctractPointChart.Series[2].Points[3].Color = Color.OliveDrab;

            #endregion

            #region 柱状图
            //添加 图表标题
            CompressionChart.Titles.Add(new ChartTitle());
            CompressionChart.Titles[0].Text = "压缩测试";
            CompressionChart.Titles[0].Font = new Font("Times New Roman", 9f, FontStyle.Bold);

            //控件背景
            CompressionChart.BackColor = Color.Transparent;
            //图表区背景
            CompressionChart.BackColor   = Color.Transparent;
            CompressionChart.BorderColor = Color.Transparent;

            // Access the diagram's properties.把 Diagram 对象转换为所需的图象类型
            XYDiagram diagram = (XYDiagram)CompressionChart.Diagram;
            diagram.Rotated = false;                                                   //图像是否旋转
            CompressionChart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True; //是否在图表上显示图例

            //// Customize the appearance of the X-axis title.调整 X-轴
            AxisX xAxis = diagram.AxisX;                                    //获取X轴
            xAxis.Alignment         = AxisAlignment.Near;                   //指定轴相对于另一主轴的位置。属性 AxisAlignment.Zero 设置仅对主轴可用
            xAxis.Title.Text        = "压缩比";                                //设置轴标题
            xAxis.Title.Font        = new Font("Times New Roman", 9f);
            xAxis.Title.Visibility  = DevExpress.Utils.DefaultBoolean.True; //是否显示轴标题
            xAxis.Label.TextPattern = "";

            //绑定数据,CompressionSpeedArray数组存放压缩速度数据。
            CompressionChart.Series[0].Points.AddPoint(CompressionRatiox[0], 2215.113);
            CompressionChart.Series[0].Points[0].Color = Color.CornflowerBlue;
            CompressionChart.Series[0].Points.AddPoint(CompressionRatiox[1], 2403.857);
            CompressionChart.Series[0].Points[1].Color = Color.CornflowerBlue;
            CompressionChart.Series[0].Points.AddPoint(CompressionRatiox[2], 2693.603);
            CompressionChart.Series[0].Points[2].Color = Color.CornflowerBlue;

            #endregion

            #region 柱状图
            //添加 图表标题
            SynchronizeChart.Titles.Add(new ChartTitle());
            SynchronizeChart.Titles[0].Text = "同步提点压缩测试";
            SynchronizeChart.Titles[0].Font = new Font("Times New Roman", 9f, FontStyle.Bold);

            //控件背景
            SynchronizeChart.BackColor = Color.Transparent;
            //图表区背景
            SynchronizeChart.BackColor   = Color.Transparent;
            SynchronizeChart.BorderColor = Color.Transparent;

            // Access the diagram's properties.把 Diagram 对象转换为所需的图象类型
            XYDiagram Synchronizediagram = (XYDiagram)SynchronizeChart.Diagram;
            Synchronizediagram.Rotated         = false;                                //图像是否旋转
            SynchronizeChart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True; //是否在图表上显示图例

            //// Customize the appearance of the X-axis title.调整 X-轴
            AxisX SynchronizexAxis = Synchronizediagram.AxisX;                         //获取X轴
            SynchronizexAxis.Alignment         = AxisAlignment.Near;                   //指定轴相对于另一主轴的位置。属性 AxisAlignment.Zero 设置仅对主轴可用
            SynchronizexAxis.Title.Text        = "拼图数&压缩比";                            //设置轴标题
            SynchronizexAxis.Title.Font        = new Font("Times New Roman", 9f);
            SynchronizexAxis.Title.Visibility  = DevExpress.Utils.DefaultBoolean.True; //是否显示轴标题
            SynchronizexAxis.Label.TextPattern = "";

            //绑定数据,SynchronizeSpeedArray数组存放同步提点压缩速度数据。
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[0, 0], 1875.352);
            SynchronizeChart.Series[0].Points[0].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[0, 1], 1924.212);
            SynchronizeChart.Series[0].Points[1].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[0, 2], 2132.521);
            SynchronizeChart.Series[0].Points[2].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[0, 3], 1952.650);
            SynchronizeChart.Series[0].Points[3].Color = Color.DodgerBlue;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[0, 0], 1934.251);
            SynchronizeChart.Series[1].Points[0].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[0, 1], 2102.250);
            SynchronizeChart.Series[1].Points[1].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[0, 2], 2254.231);
            SynchronizeChart.Series[1].Points[2].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[0, 3], 2002.290);
            SynchronizeChart.Series[1].Points[3].Color = Color.IndianRed;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[0, 0], 1975.625);
            SynchronizeChart.Series[2].Points[0].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[0, 1], 2231.652);
            SynchronizeChart.Series[2].Points[1].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[0, 2], 2301.254);
            SynchronizeChart.Series[2].Points[2].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[0, 3], 2152.235);
            SynchronizeChart.Series[2].Points[3].Color = Color.OliveDrab;

            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[1, 0], 2042.541);
            SynchronizeChart.Series[0].Points[0].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[1, 1], 2152.321);
            SynchronizeChart.Series[0].Points[1].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[1, 2], 2014.258);
            SynchronizeChart.Series[0].Points[2].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[1, 3], 2152.874);
            SynchronizeChart.Series[0].Points[3].Color = Color.DodgerBlue;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[1, 0], 2251.245);
            SynchronizeChart.Series[1].Points[0].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[1, 1], 2240.752);
            SynchronizeChart.Series[1].Points[1].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[1, 2], 2157.542);
            SynchronizeChart.Series[1].Points[2].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[1, 3], 2274.632);
            SynchronizeChart.Series[1].Points[3].Color = Color.IndianRed;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[1, 0], 2267.854);
            SynchronizeChart.Series[2].Points[0].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[1, 1], 2396.824);
            SynchronizeChart.Series[2].Points[1].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[1, 2], 2174.950);
            SynchronizeChart.Series[2].Points[2].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[1, 3], 2296.420);
            SynchronizeChart.Series[2].Points[3].Color = Color.OliveDrab;

            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[2, 0], 2265.541);
            SynchronizeChart.Series[0].Points[0].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[2, 1], 2145.842);
            SynchronizeChart.Series[0].Points[1].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[2, 2], 2235.275);
            SynchronizeChart.Series[0].Points[2].Color = Color.DodgerBlue;
            SynchronizeChart.Series[0].Points.AddPoint(SynchronizeChartx[2, 3], 2358.352);
            SynchronizeChart.Series[0].Points[3].Color = Color.DodgerBlue;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[2, 0], 2312.201);
            SynchronizeChart.Series[1].Points[0].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[2, 1], 2212.542);
            SynchronizeChart.Series[1].Points[1].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[2, 2], 2268.435);
            SynchronizeChart.Series[1].Points[2].Color = Color.IndianRed;
            SynchronizeChart.Series[1].Points.AddPoint(SynchronizeChartx[2, 3], 2410.745);
            SynchronizeChart.Series[1].Points[3].Color = Color.IndianRed;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[2, 0], 2322.401);
            SynchronizeChart.Series[2].Points[0].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[2, 1], 2298.215);
            SynchronizeChart.Series[2].Points[1].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[2, 2], 2358.352);
            SynchronizeChart.Series[2].Points[2].Color = Color.OliveDrab;
            SynchronizeChart.Series[2].Points.AddPoint(SynchronizeChartx[2, 3], 2425.212);
            SynchronizeChart.Series[2].Points[3].Color = Color.OliveDrab;

            #endregion
        }
示例#10
0
        /// <summary>
        /// 初始化速度曲线
        /// </summary>
        private void CreateVelocityChart()
        {
            //Create new _chartTemp

            _chartVelocity = new LightningChartUltimate();
            //Disable rendering, strongly recommended before updating chart properties
            _chartVelocity.BeginUpdate();

            //Reduce memory usage and increase performance. Destroys out-scrolled data.
            _chartVelocity.ViewXY.DropOldSeriesData = true;

            _chartVelocity.Parent      = lightningChartUltimate3;
            _chartVelocity.Name        = "Si prediction";
            _chartVelocity.Title.Text  = "铁水实时流速曲线";
            _chartVelocity.Title.Color = PublicColor.FromArgb(255, Color.Yellow);
            _chartVelocity.Title.Font  = new Font("黑体", 10, FontStyle.Bold);
            _chartVelocity.Dock        = DockStyle.Fill;

            // Setup custom style.
            //ExampleUtils.SetStandardFlatStyle(_chartSi);
            _chartVelocity.Background.Color        = PublicColor.FromArgb(255, Color.Gray);
            _chartVelocity.Background.GradientFill = GradientFill.Solid;
            //Configure x-axis
            AxisX xAxis = _chartVelocity.ViewXY.XAxes[0];

            xAxis.ValueType        = AxisValueType.DateTime;
            xAxis.Title.Text       = "Time";
            xAxis.AutoFormatLabels = false;
            //xAxis.LabelsTimeFormat = "dd/MM/yyyy\nHH:mm.ss";
            xAxis.LabelsTimeFormat = "HH:mm.ss";
            xAxis.LabelsAngle      = 0;
            xAxis.ScrollMode       = XAxisScrollMode.Scrolling;
            xAxis.LabelsFont       = new Font("黑体", 6);
            xAxis.LabelsColor      = PublicColor.FromArgb(255, Color.Yellow);
            xAxis.Visible          = false;
            xAxis.Title.Visible    = false;

            //Convert DateTime values to axis values
            DateTime now  = DateTime.Now;
            double   minX = xAxis.DateTimeToAxisValue(now);
            double   maxX = xAxis.DateTimeToAxisValue(now) + 200;

            xAxis.SetRange(minX, maxX);

            //Configure y-axis
            AxisY yAxis = _chartVelocity.ViewXY.YAxes[0];

            yAxis.Title.Text = "Si Predition";
            yAxis.SetRange(4.5, 8);
            yAxis.LabelsFont    = new Font("黑体", 6);
            yAxis.LabelsColor   = PublicColor.FromArgb(255, Color.Yellow);
            yAxis.Title.Visible = false;

            //Configure and add series to the chart
            PointLineSeries series = new PointLineSeries(_chartVelocity.ViewXY, xAxis, yAxis);

            series.LineStyle.Color  = Color.Yellow;
            series.MouseInteraction = false;
            _chartVelocity.ViewXY.PointLineSeries.Add(series);

            //Don't show legendbox
            _chartVelocity.ViewXY.LegendBoxes[0].Visible = false;

            //Allow chart rendering
            _chartVelocity.EndUpdate();
        }
示例#11
0
        /// <summary>
        /// 初始化温度曲线
        /// </summary>
        private void CreateTempChart()
        {
            //Create new _chartTemp
            _chartTemp = new LightningChartUltimate();
            _chartTemp.BeginUpdate();
            _chartTemp.ViewXY.DropOldSeriesData = true;

            _chartTemp.Parent = lightningChartUltimate1;
            _chartTemp.Name   = "出铁口铁水温度曲线";
            //_chartTemp.Title.Font.;
            _chartTemp.Title.Text  = "出铁口铁水温度曲线";
            _chartTemp.Title.Color = PublicColor.FromArgb(255, Color.Yellow);
            _chartTemp.Title.Font  = new Font("黑体", 10, FontStyle.Bold);
            //_chartTemp.Title.Visible = false;
            _chartTemp.Dock                    = DockStyle.Fill;
            _chartTemp.Background.Color        = PublicColor.FromArgb(255, Color.Gray);
            _chartTemp.Background.GradientFill = GradientFill.Solid;

            AxisX xAxis = _chartTemp.ViewXY.XAxes[0];

            xAxis.ValueType        = AxisValueType.DateTime;
            xAxis.Title.Text       = "Time";
            xAxis.AutoFormatLabels = false;

            //xAxis.LabelsTimeFormat = "dd/MM/yyyy\nHH:mm.ss";
            xAxis.LabelsTimeFormat = "HH:mm.ss";
            xAxis.LabelsAngle      = 0;
            xAxis.ScrollMode       = XAxisScrollMode.Scrolling;
            xAxis.Title.Visible    = false;
            xAxis.Visible          = false;

            //Convert DateTime values to axis values
            DateTime now  = DateTime.Now;
            double   minX = xAxis.DateTimeToAxisValue(now);
            double   maxX = xAxis.DateTimeToAxisValue(now) + 100;

            xAxis.SetRange(minX, maxX);

            //Configure y-axis
            AxisY yAxis = _chartTemp.ViewXY.YAxes[0];

            yAxis.Title.Text    = "Temperature / °C";
            yAxis.Title.Visible = false;
            yAxis.SetRange(1500, 1600);
            yAxis.LabelsFont  = new Font("黑体", 6);
            yAxis.LabelsColor = PublicColor.FromArgb(255, Color.Yellow);

            //Configure and add series to the chart
            PointLineSeries series = new PointLineSeries(_chartTemp.ViewXY, xAxis, yAxis);

            series.LineStyle.Color  = Color.Yellow;
            series.MouseInteraction = false;

            _chartTemp.ViewXY.PointLineSeries.Add(series);

            //Don't show legendbox
            _chartTemp.ViewXY.LegendBoxes[0].Visible = false;

            //Allow chart rendering
            _chartTemp.EndUpdate();
        }
示例#12
0
        public override bool DrawPlot(Layer layer, ChartProperty property, bool onlyUpdateLastBar)
        {
            AxisX     cAxisX = layer.AxisX;
            Rectangle cRectY = this.AxisY.AxisRectangle;

            int iIndex      = 0;
            int iOldBKColor = __cGDI.SelectBackground(property.BackgroundColor);

            PowerLanguage.PenStyle cLinePen = this.ChartSetting.PenStyles[0];
            IntPtr cOldPen = __cGDI.SelectPen(cLinePen);

            if (onlyUpdateLastBar)
            {
                iIndex = cAxisX.BarNumber + cAxisX.BarCount - 1;
                iIndex = (iIndex > cAxisX.DataCount) ? cAxisX.DataCount : iIndex;
                int iOffset = this.ConvertAxisScaleIndexToOffset(iIndex);
                int iX      = cAxisX.ConvertBarNumberToWidth(iIndex).CenterPoint;
                int iPrevX  = cAxisX.ConvertBarNumberToWidth(iIndex - 1).CenterPoint;
                if (!DrawClosingLine(iOffset, cRectY.Y, iX, iPrevX, new PowerLanguage.PenStyle(property.BackgroundColor, cLinePen.Width, cLinePen.Pattern)))
                {
                    return(false);
                }
            }
            else
            {
                this.RefreshAxisY(property);

                __dPrevClose = double.NaN;
                int iCount      = cAxisX.BarCount;
                int iStartIndex = cAxisX.BarNumber;
                for (int i = 0; i < iCount; i++)
                {
                    iIndex = iStartIndex + i;
                    if (iIndex > cAxisX.DataCount)
                    {
                        --iIndex;
                        break;
                    }
                    else
                    {
                        if (__dPrevClose != double.NaN)
                        {
                            int iOffset = this.ConvertAxisScaleIndexToOffset(iIndex);
                            int iX      = cAxisX.ConvertBarNumberToWidth(iIndex).CenterPoint;
                            int iPrevX  = cAxisX.ConvertBarNumberToWidth(iIndex - 1).CenterPoint;
                            DrawClosingLine(iOffset, cRectY.Y, iX, iPrevX, null);
                        }
                    }
                }

                if (this.PlotIndex == 0)                    //Plot 索引值為 0 才印出標題(其他的索引就不需要再印出標題)
                {
                    DrawTitle(cRectY, property);
                }
            }
            __cGDI.RemoveObject(__cGDI.SelectPen(cOldPen));

            if (!layer.Drawable)
            {
                layer.LegendIndex = iIndex;

                if (this.ChartSetting.IsShowNewPrice)                      //是否要顯示新價格線
                {
                    this.AxisY.Value = __cBars.Close[0];                   //指定最新收盤價格
                    this.Painter.DrawAxisValueLabel(this.AxisY, this.ChartSetting.LegendColor, property);
                }
            }
            this.DrawLegend(layer.LegendIndex, property);

            __cGDI.SelectBackground(iOldBKColor);
            return(true);
        }
示例#13
0
 private void SetAxisXRanges(DateTime min, DateTime max, TimeSpan timeSpanPerGraph, AxisX axisX)
 {
     axisX.DateTimeScaleMode = DateTimeScaleMode.Manual;
     if (timeSpanPerGraph < new TimeSpan(0, 1, 0))
     {
         axisX.DateTimeGridAlignment  = DateTimeMeasurementUnit.Second;
         axisX.DateTimeMeasureUnit    = DateTimeMeasurementUnit.Second;
         axisX.DateTimeOptions.Format = DateTimeFormat.ShortTime;
     }
     else if (timeSpanPerGraph <= new TimeSpan(12, 0, 0))
     {
         axisX.DateTimeGridAlignment  = DateTimeMeasurementUnit.Second;
         axisX.DateTimeMeasureUnit    = DateTimeMeasurementUnit.Minute;
         axisX.DateTimeOptions.Format = DateTimeFormat.ShortTime;
     }
     else if (timeSpanPerGraph <= new TimeSpan(31, 0, 0, 1))
     {
         axisX.DateTimeGridAlignment  = DateTimeMeasurementUnit.Minute;
         axisX.DateTimeMeasureUnit    = DateTimeMeasurementUnit.Minute;
         axisX.DateTimeOptions.Format = DateTimeFormat.ShortTime;
     }
     else
     {
         axisX.DateTimeGridAlignment  = DateTimeMeasurementUnit.Minute;
         axisX.DateTimeMeasureUnit    = DateTimeMeasurementUnit.Day;
         axisX.DateTimeOptions.Format = DateTimeFormat.ShortDate;
     }
     axisX.Range.SetMinMaxValues(min, max);
 }
示例#14
0
        public void SetDataSource(List <ReadingsSummary> items)
        {
            var cumTimeInfo = GetCumulativeWindows(
                DrillStartDate.Add(CumulativeTimeSpan),
                CumulativeTimeSpan,
                StepBack
                );

            // todo: can this copy be eliminated?

            Func <ReadingsSummary, double> summaryValueFunction;
            Func <ReadingValues, double>   valueFunction;
            var selAttrType = SelectedAttributeType;

            switch (selAttrType)
            {
            case ReadingAttributeType.WindSpeed:
                summaryValueFunction = r => r.WindSpeed;
                valueFunction        = r => r.WindSpeed;
                break;

            case ReadingAttributeType.Temperature:
                summaryValueFunction = r => r.Temperature;
                valueFunction        = r => r.Temperature;
                break;

            case ReadingAttributeType.Humidity:
                summaryValueFunction = r => r.Humidity;
                valueFunction        = r => r.Humidity;
                break;

            case ReadingAttributeType.Pressure:
                summaryValueFunction = r => r.Pressure;
                valueFunction        = r => r.Pressure;
                break;

            case ReadingAttributeType.WindDirection:
                summaryValueFunction = r => r.WindDirection;
                valueFunction        = r => r.WindDirection;
                break;

            default:
                throw new NotSupportedException(String.Format("SelectedAttributeType {0} is not supported", selAttrType));
            }

            var min       = 0.0;
            var max       = 0.0;
            var stdDevMin = 0.0;
            var stdDevMax = 0.0;

            if (items.Count > 0)
            {
                min       = max = summaryValueFunction(items[0]);
                stdDevMin = stdDevMax = valueFunction(items[0].SampleStandardDeviation);
                for (int i = 1; i < items.Count; i++)
                {
                    var value = summaryValueFunction(items[i]);
                    if (value < min)
                    {
                        min = value;
                    }
                    else if (value > max)
                    {
                        max = value;
                    }

                    var stdDevValue = valueFunction(items[i].SampleStandardDeviation);
                    if (stdDevValue < stdDevMin)
                    {
                        stdDevMin = stdDevValue;
                    }
                    else if (stdDevValue > stdDevMax)
                    {
                        stdDevMax = stdDevValue;
                    }
                }
            }

            RecreateCumulativeGraphs();             // TODO: only when they need to change?

            for (int i = 0; i < cumTimeInfo.Count; i++)
            {
                var window        = cumTimeInfo[i];
                var chartReadings = items.Where(r => r.TimeStamp >= window.min && r.TimeStamp <= window.max).ToList();
                //_cumulativeCharts[i].DataSource = chartReadings;
                var chart        = _cumulativeCharts[i];
                var diagram      = chart.Diagram as XYDiagram;
                var seriesData   = chart.Series[1];
                var seriesStdDev = chart.Series[0];
                seriesData.DataSource   = chartReadings;
                seriesStdDev.DataSource = chartReadings.Select(r => new Reading(r.TimeStamp, r.SampleStandardDeviation)).ToList();
                chart.Invalidate();
                chart.Titles[0].Text = window.Name;

                AxisX axisX = diagram.AxisX;
                AxisY axisY = diagram.AxisY;

                var timeSpanPerGraph = window.Span;
                SetAxisYRanges(min, max, axisY);
                SetAxisYRanges(stdDevMin, stdDevMax, diagram.SecondaryAxesY[0]);
                SetAxisXRanges(window.min, window.max, timeSpanPerGraph, axisX);
            }
        }