Пример #1
0
        private void ChartInit()
        {
            //RuntimeHitTesting设为True时,才可从ChartHitInfo中取得SeriesPoint
            //chartControl1.RuntimeHitTesting = true;

            XYDiagram myDiagram = chartControl1.Diagram as XYDiagram;
            AxisX     myAxisX   = myDiagram.AxisX;

            myAxisX.WholeRange.AutoSideMargins  = false;
            myAxisX.WholeRange.SideMarginsValue = 0;
            foreach (ConstantLine cLine in myAxisX.ConstantLines)
            {
                cLine.Name = string.Empty;
            }
            AxisY myAxisY = myDiagram.AxisY;

            myAxisY.WholeRange.AutoSideMargins = true;
            myAxisY.Tickmarks.Visible          = false;
            myAxisY.Tickmarks.MinorVisible     = false;

            SecondaryAxisY myRateAxisY = myDiagram.SecondaryAxesY[0];

            myRateAxisY.WholeRange.AutoSideMargins = true;
            myRateAxisY.Tickmarks.Visible          = true;
            myRateAxisY.Tickmarks.MinorVisible     = false;
        }
Пример #2
0
        public static Series CreateSeries(string typechar, Dictionary <string, string> diction)
        {
            Series ser = null;
            Dictionary <string, string> dicts = diction;

            switch (typechar)
            {
            case "柱状图":
                ser = new Series("", ViewType.Bar);
                break;

            case "线状图":
                ser = new Series("", ViewType.Line);
                break;

            default:
                ser = new Series("", ViewType.Bar);
                break;
            }

            ser.ArgumentScaleType = ScaleType.Qualitative;
            foreach (var item in dicts)
            {
                SeriesPoint sp = new SeriesPoint(item.Key, item.Value);
                ser.Points.Add(sp);
            }
            SecondaryAxisY sy = new SecondaryAxisY();

            sy.GridSpacing = 1;
            return(ser);
        }
Пример #3
0
        protected virtual void AddYAxes(ChartData <TX, TY> chartData, XYDiagram diagram, bool showPaneCaptioninAxisCaption = true)
        {
            diagram.SecondaryAxesY.Clear();

            if (!chartData.Panes.Any())
            {
                return;
            }

            //only one pane
            if (chartData.Panes.Count == 1)
            {
                diagram.AxisY.Visibility        = DefaultBoolean.True;
                diagram.AxisY.GridLines.Visible = true;
                initializeAxis(diagram.AxisY, chartData.Panes.First().Axis);
            }
            else
            {
                foreach (var paneData in chartData.Panes)
                {
                    var yAxis = new SecondaryAxisY(paneData.Id);
                    initializeAxis(yAxis, paneData.Axis);
                    diagram.SecondaryAxesY.Add(yAxis);
                }
                purgeMultipleSameAxisTitles(diagram);

                diagram.AxisY.Visibility        = DefaultBoolean.False;
                diagram.AxisY.GridLines.Visible = false;
            }
        }
        private XYDiagramPaneBase CheckAddPanel(StrategyDataItemInfo info)
        {
            XYDiagram diagram = (XYDiagram)Chart.Diagram;

            if (diagram == null)
            {
                return(null);
            }
            diagram.AxisY.WholeRange.AlwaysShowZeroLevel = false;
            if (info.PanelName == "Default")
            {
                return(diagram.DefaultPane);
            }
            XYDiagramPane pane = null;

            if (diagram.Panes[info.PanelName] != null)
            {
                pane = diagram.Panes[info.PanelName];
            }
            IResizeableArray items = GetDataSource(info) as IResizeableArray;

            if (items != null && !(GetArgumentValue(info, items.GetItem(0)) is DateTime))
            {
                if (info.PanelName == "Default")
                {
                }
                else
                {
                    SecondaryAxisX axisX = new SecondaryAxisX();
                    axisX.Name = info.AxisXName;
                    diagram.SecondaryAxesX.Add(axisX);
                }
            }

            if (pane == null || info.Reversed)
            {
                SecondaryAxisY axis = new SecondaryAxisY();
                axis.Assign(diagram.AxisY);
                axis.Name    = info.AxisYName;
                axis.Reverse = info.Reversed;
                diagram.SecondaryAxesY.Add(axis);
            }
            if (pane == null)
            {
                pane = new XYDiagramPane()
                {
                    Name = info.PanelName
                };
                diagram.Panes.Add(pane);
                Legend l = new Legend();
                l.Assign(Chart.Legend); l.Name = info.PanelName;
                l.DockTarget = pane;
                Chart.Legends.Add(l);
            }
            if (!info.PanelVisible)
            {
                pane.Visibility = ChartElementVisibility.Hidden;
            }
            return(pane);
        }
Пример #5
0
        public static Series CreateSeries(string typechar, Dictionary<string, string> diction)
        {
            Series ser = null;
            Dictionary<string, string> dicts = diction;
            switch (typechar)
            {
                case "柱状图":
                    ser = new Series("", ViewType.Bar);
                    break;
                case "线状图":
                    ser = new Series("", ViewType.Line);
                    break;
                default:
                    ser = new Series("", ViewType.Bar);
                    break;
            }

            ser.ArgumentScaleType = ScaleType.Qualitative;
            foreach (var item in dicts)
            {
                SeriesPoint sp = new SeriesPoint(item.Key, item.Value);
                ser.Points.Add(sp);
            }
            SecondaryAxisY sy = new SecondaryAxisY();
            sy.GridSpacing = 1;
            return ser;
        }
Пример #6
0
    /// <summary>
    /// 创建图表的第二坐标系
    /// </summary>
    /// <param name="series">Series对象</param>
    /// <returns></returns>
    private SecondaryAxisY CreateAxisY(Series series, string viewType)
    {
        SecondaryAxisY myAxis = new SecondaryAxisY(series.Name);

        ((XYDiagram)WebChartControl1.Diagram).SecondaryAxesY.Add(myAxis);

        switch (viewType)
        {
        case "Bar":
            ((BarSeriesView)series.View).AxisY = myAxis;
            break;

        case "Line":
            ((LineSeriesView)series.View).AxisY = myAxis;
            break;

        default:
            break;
        }

        myAxis.Title.Text      = series.Name;
        myAxis.Title.Alignment = StringAlignment.Far; //顶部对齐
        myAxis.Title.Visible   = true;                //显示标题
        myAxis.Title.Font      = new Font("宋体", 9.0f);

        Color color = series.View.Color;//设置坐标的颜色和图表线条颜色一致

        myAxis.Title.TextColor = color;
        myAxis.Label.TextColor = color;
        myAxis.Color           = color;

        return(myAxis);
    }
Пример #7
0
        public static void AddSecondaryAxisY(this ChartControl chart, List <Series> seriesList)
        {
            chart.Series.AddRange(seriesList.ToArray());
            // Create two secondary axes, and add them to the chart's Diagram.
            SecondaryAxisY myAxisY = new SecondaryAxisY("my Y-Axis");

            if (chart.Diagram == null)
            {
                return;
            }
            ((XYDiagram)chart.Diagram).SecondaryAxesY.Clear();
            ((XYDiagram)chart.Diagram).SecondaryAxesY.Add(myAxisY);

            // Assign the series2 to the created axes.
            string names = "";

            foreach (var item in seriesList)
            {
                ((LineSeriesView)item.View).AxisY = myAxisY;
                names += " " + item.Name;
            }


            // Customize the appearance of the secondary axes (optional).
            myAxisY.Title.Text       = names;
            myAxisY.Title.Visibility = DefaultBoolean.True;
            myAxisY.Title.TextColor  = Color.Blue;
            myAxisY.Label.TextColor  = Color.Blue;

            myAxisY.Color = Color.Blue;
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            // Create a new chart.
            ChartControl chartControl1 = new ChartControl();

            // Create two series.
            Series series1 = new Series("Series 1", ViewType.Bar);
            Series series2 = new Series("Series 2", ViewType.Line);

            // Add points to them, with their arguments different.
            series1.Points.Add(new SeriesPoint("A", 10));
            series1.Points.Add(new SeriesPoint("B", 12));
            series1.Points.Add(new SeriesPoint("C", 17));
            series1.Points.Add(new SeriesPoint("D", 14));
            series2.Points.Add(new SeriesPoint("I", 1500));
            series2.Points.Add(new SeriesPoint("II", 1800));
            series2.Points.Add(new SeriesPoint("III", 2500));
            series2.Points.Add(new SeriesPoint("IV", 3300));

            // Add both series to the chart.
            chartControl1.Series.AddRange(new Series[] { series1, series2 });

            // Hide the legend (optional).
            chartControl1.Legend.Visible = false;

            // Create two secondary axes, and add them to the chart's Diagram.
            SecondaryAxisX myAxisX = new SecondaryAxisX("my X-Axis");
            SecondaryAxisY myAxisY = new SecondaryAxisY("my Y-Axis");

            ((XYDiagram)chartControl1.Diagram).SecondaryAxesX.Add(myAxisX);
            ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Add(myAxisY);

            // Assign the series2 to the created axes.
            ((LineSeriesView)series2.View).AxisX = myAxisX;
            ((LineSeriesView)series2.View).AxisY = myAxisY;

            // Customize the appearance of the secondary axes (optional).
            myAxisX.Title.Text      = "A Secondary X-Axis";
            myAxisX.Title.Visible   = true;
            myAxisX.Title.TextColor = Color.Red;
            myAxisX.Label.TextColor = Color.Red;
            myAxisX.Color           = Color.Red;

            myAxisY.Title.Text      = "A Secondary Y-Axis";
            myAxisY.Title.Visible   = true;
            myAxisY.Title.TextColor = Color.Blue;
            myAxisY.Label.TextColor = Color.Blue;
            myAxisY.Color           = Color.Blue;

            // Add the chart to the form.
            chartControl1.Dock = DockStyle.Fill;
            this.Controls.Add(chartControl1);
        }
Пример #9
0
        public void Plot(IProtocolChartData dataToPlot)
        {
            Clear();
            chart.DataSource       = dataToPlot.DataTable;
            chart.SeriesDataMember = dataToPlot.GroupingName;
            chart.InitializeColor();

            // Specify the date-time argument scale type for the series,
            // as it is qualitative, by default.
            chart.SeriesTemplate.ArgumentScaleType  = ScaleType.Numerical;
            chart.SeriesTemplate.ArgumentDataMember = dataToPlot.XValue;
            chart.SeriesTemplate.ValueScaleType     = ScaleType.Numerical;
            chart.SeriesTemplate.ValueDataMembers.AddRange(new[] { dataToPlot.YValue });
            chart.SeriesTemplate.LabelsVisibility = DefaultBoolean.False;
            chart.SeriesTemplate.View             = new StackedBarSeriesView();
            var diagram = (XYDiagram)chart.Diagram;

            ////// Access the type-specific options of the diagram.
            diagram.AxisX.Title.Text       = XAxisTitle;
            diagram.AxisX.Title.Visibility = DefaultBoolean.True;
            diagram.AxisY.Title.Text       = YAxisTitle;
            diagram.AxisY.Title.Visibility = DefaultBoolean.True;
            diagram.AxisX.WholeRange.Auto  = true;
            diagram.AxisX.WholeRange.SetMinMaxValues(dataToPlot.XMin - BarWidth, dataToPlot.XMax + BarWidth);
            chart.Legend.LegendPosition(LegendPositions.RightInside);
            diagram.SecondaryAxesY.Clear();

            SecondaryAxisY axisY2 = null;

            if (dataToPlot.NeedsMultipleAxis)
            {
                axisY2 = new SecondaryAxisY("Y2");
                diagram.SecondaryAxesY.Add(axisY2);
                axisY2.Title.Text       = Y2AxisTitle;
                axisY2.Title.Visibility = DefaultBoolean.True;
            }

            foreach (Series series in chart.Series)
            {
                var view = ((BarSeriesView)series.View);
                view.BarWidth = BarWidth;
                if (dataToPlot.NeedsMultipleAxis)
                {
                    if (dataToPlot.SeriesShouldBeOnSecondAxis(series.Name))
                    {
                        view.AxisY = axisY2;
                    }
                }
                series.Visible = true;
            }
        }
Пример #10
0
        internal static AxisBase GetSecondaryAxis(Diagram diagram, ChartAxisType axisType, string name)
        {
            switch (diagram)
            {
            case XYDiagram xyDiagram:
                switch (axisType)
                {
                case ChartAxisType.X:
                    var resultX = new SecondaryAxisX(name);
                    xyDiagram.SecondaryAxesX.Add(resultX);
                    return(resultX);

                case ChartAxisType.Y:
                    var resultY = new SecondaryAxisY(name);
                    xyDiagram.SecondaryAxesY.Add(resultY);
                    return(resultY);
                }
                break;

            case SwiftPlotDiagram swiftPlotDiagram:
                switch (axisType)
                {
                case ChartAxisType.X:
                    var resultX = new SwiftPlotDiagramSecondaryAxisX(name);
                    swiftPlotDiagram.SecondaryAxesX.Add(resultX);
                    return(resultX);

                case ChartAxisType.Y:
                    var resultY = new SwiftPlotDiagramSecondaryAxisY(name);
                    swiftPlotDiagram.SecondaryAxesY.Add(resultY);
                    return(resultY);
                }
                break;

            case XYDiagram3D _:
                throw new Exception("3D charts do not support secondary axes.");

            case RadarDiagram _:
                throw new Exception("Radar chart does not support secondary axes.");

            case SimpleDiagram _:
                throw new Exception("Pie chart does not support axes.");

            case SimpleDiagram3D _:
                throw new Exception("Pie chart does not support axes.");
            }

            throw new Exception("Current chart does not support axes.");
        }
Пример #11
0
        public void _图表ByDt(ChartControl chartControl, ViewType viewType, DataTable dataSource, string xField, string[] yFields, string[] secondyFields)
        {
            // 十字 里面
            chartControl.SetCrosshair(true);                                          // 设置是否显示十字标
            chartControl.Legend.Direction           = LegendDirection.LeftToRight;    // 说明文字
            chartControl.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Left; // 说明文字
            chartControl.Legend.AlignmentVertical   = LegendAlignmentVertical.Top;    // 说明文字

            if (yFields != null)
            {
                // 添加 第一个y轴
                for (int i = 0; i < yFields.Length; i++)
                {
                    Series _baseSeries = new Series(yFields[i], viewType);
                    _baseSeries.ArgumentDataMember = xField;
                    _baseSeries.ValueDataMembers.AddRange(yFields[i]);
                    _baseSeries.DataSource        = dataSource;
                    _baseSeries.LegendTextPattern = "{S}";
                    _baseSeries.Visible           = true;
                    chartControl.Series.Add(_baseSeries);
                }
            }
            if (secondyFields == null)
            {
                return;
            }
            if (chartControl.Diagram == null)
            {
                return;
            }
            ((XYDiagram)chartControl.Diagram).SecondaryAxesY.Clear();
            for (int i = 0; i < secondyFields.Length; i++)
            {
                Series _baseSeries = new Series(secondyFields[i], viewType);
                _baseSeries.ArgumentDataMember = xField;
                _baseSeries.ValueDataMembers.AddRange(secondyFields[i]);
                _baseSeries.DataSource        = dataSource;
                _baseSeries.LegendTextPattern = "{S}";
                _baseSeries.Visible           = true;
                // 定义 第二y轴
                SecondaryAxisY myAxisY = new SecondaryAxisY("my Y-Axis");
                ((XYDiagram)chartControl.Diagram).SecondaryAxesY.Add(myAxisY);
                ((LineSeriesView)_baseSeries.View).AxisY = myAxisY;
                chartControl.Series.Add(_baseSeries);
            }
        }
Пример #12
0
        private XYDiagramPaneBase CheckAddPanel(StrategyDataItemInfo info)
        {
            XYDiagram diagram = (XYDiagram)Chart.Diagram;

            if (diagram == null)
            {
                return(null);
            }
            diagram.AxisY.WholeRange.AlwaysShowZeroLevel = false;
            if (info.PanelName == "Default")
            {
                return(diagram.DefaultPane);
            }
            XYDiagramPane pane = null;

            if (diagram.Panes[info.PanelName] != null)
            {
                pane = diagram.Panes[info.PanelName];
            }

            if (pane == null || info.Reversed)
            {
                SecondaryAxisY axis = new SecondaryAxisY();
                axis.Assign(diagram.AxisY);
                axis.Name    = info.AxisYName;
                axis.Reverse = info.Reversed;
                diagram.SecondaryAxesY.Add(axis);
            }
            if (pane == null)
            {
                pane = new XYDiagramPane()
                {
                    Name = info.PanelName
                };
                diagram.Panes.Add(pane);
                Legend l = new Legend();
                l.Assign(Chart.Legend); l.Name = info.PanelName;
                l.DockTarget = pane;
                Chart.Legends.Add(l);
            }
            if (!info.PanelVisible)
            {
                pane.Visibility = ChartElementVisibility.Hidden;
            }
            return(pane);
        }
Пример #13
0
        public void BindIterationChart(List <ProjectSummary> dataSource)
        {
            IterationChartBar.Series.Clear();
            BarSeriesView effortbarView = new SideBySideBarSeriesView();
            Series        effortSeries  = new Series();

            effortSeries.Name         = Properties.Resources.colSumEffort;
            effortSeries.ShowInLegend = true;
            effortSeries.View         = effortbarView;


            Series inputEffortRateSeries = CreateLineSeries(Properties.Resources.colInputEffortRate, NumericFormat.Percent);

            foreach (var item in dataSource)
            {
                SeriesPoint effortSeriesPoint = new SeriesPoint(item.Name, new object[] { ((object)(item.SumEffort)) });
                effortSeries.Points.Add(effortSeriesPoint);

                SeriesPoint inputEffortRateSeriesPoint = new SeriesPoint(item.Name, new object[] { ((object)(item.SumInputEffortRate)) });
                inputEffortRateSeries.Points.Add(inputEffortRateSeriesPoint);
            }
            IterationChartBar.Series.Add(effortSeries);
            IterationChartBar.Series.Add(inputEffortRateSeries);

            XYDiagram diagram = IterationChartBar.Diagram as XYDiagram;

            if (diagram == null)
            {
                return;
            }
            diagram.AxisY.Title.Visible = true;
            diagram.AxisY.Title.Text    = Properties.Resources.WorkUnit;

            if (diagram.SecondaryAxesY.Count <= 0)
            {
                SecondaryAxisY secondAxisY = new SecondaryAxisY();
                diagram.SecondaryAxesY.Add(secondAxisY);
            }
            LineSeriesView inputEffortRateView = inputEffortRateSeries.View as LineSeriesView;

            if (inputEffortRateView != null)
            {
                inputEffortRateView.AxisY = diagram.SecondaryAxesY[0];
            }
        }
Пример #14
0
        /// <summary>
        /// 创建图表的第二坐标系
        /// </summary>
        /// <param name="series">Series对象</param>
        /// <returns></returns>
        private SecondaryAxisY CreateAxisY(Series series)
        {
            SecondaryAxisY myAxis = new SecondaryAxisY(series.Name);

            ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Add(myAxis);
            ((LineSeriesView)series.View).AxisY = myAxis;
            myAxis.Title.Text      = series.Name;
            myAxis.Title.Alignment = StringAlignment.Far; //顶部对齐
            myAxis.Title.Visible   = true;                //显示标题
            myAxis.Title.Font      = new Font("宋体", 9.0f);

            Color color = series.View.Color;//设置坐标的颜色和图表线条颜色一致

            myAxis.Title.TextColor = color;
            myAxis.Label.TextColor = color;
            myAxis.Color           = color;

            return(myAxis);
        }
        private SecondaryAxisY CreateAxisY(Series series)
        {
            SecondaryAxisY myAxis = new SecondaryAxisY(series.Name);

            ((XYDiagram)chartCYPM.Diagram).SecondaryAxesY.Add(myAxis);
            ((XYDiagram)chartCYPM.Diagram).SecondaryAxesY.Clear();
            ((XYDiagram)chartCYPM.Diagram).SecondaryAxesY.Add(myAxis);
            ((BarSeriesView)series.View).AxisY = myAxis;
            myAxis.Title.Text       = series.Name;
            myAxis.Title.Alignment  = StringAlignment.Center;                  //顶部对齐
            myAxis.Title.Visibility = DevExpress.Utils.DefaultBoolean.Default; //显示标题
            myAxis.Title.Font       = new Font(new FontFamily("黑体"), 11);

            Color color = series.View.Color;//设置坐标的颜色和图表线条颜色一致

            myAxis.Title.TextColor = color;
            myAxis.Label.TextColor = color;
            myAxis.Color           = color;

            return(myAxis);
        }
Пример #16
0
        public void Add2AxesYSeries(ChartControl chartControl, DataTable dt, string[] fieldN, string[] seriesN)//增加含有第二辅助Y轴的折线图
        {
            for (int i = 0; i < fieldN.Count(); i++)
            {
                Series series = new Series(seriesN[i], ViewType.Line);
                series.DataSource         = dt;
                series.ArgumentScaleType  = ScaleType.DateTime;                                                    //x轴参数类型
                series.ArgumentDataMember = "RTIME";                                                               //x轴获取指定字段的列
                series.ValueDataMembers.AddRange(fieldN[i]);                                                       //y轴获取指定字段的列
                ((LineSeriesView)series.View).Color = COLORS2[i];
                chartControl.Series.Add(series);
            }

            XYDiagram diagram = (XYDiagram)chartControl.Diagram;

            diagram.AxisY.WholeRange.Auto = true;
            diagram.SecondaryAxesY.Clear();

            SecondaryAxisY secAxes = new SecondaryAxisY(chartControl.Series[2].Name);                       //增加第二辅助Y轴线

            secAxes.WholeRange.Auto = true;

            ((XYDiagram)chartControl.Diagram).SecondaryAxesY.Add(secAxes);
            ((LineSeriesView)chartControl.Series[2].View).AxisY = secAxes;

            secAxes.Title.Text      = chartControl.Series[2].Name + "(m³)";
            secAxes.Title.Alignment = StringAlignment.Far;                                                  //顶部对齐
            secAxes.Title.Visible   = true;                                                                 //显示标题
            secAxes.Title.Font      = new Font("宋体", 9.0f);

            Color colorSecAxis = chartControl.Series[2].View.Color;                                                 //设置坐标的颜色和图表线条颜色一致

            secAxes.Title.TextColor = colorSecAxis;
            secAxes.Label.TextColor = colorSecAxis;
            secAxes.Color           = colorSecAxis;

            //chartControl.CrosshairOptions.ShowValueLabels = true;                                                  //移动鼠标时动态显示X轴数据标签
            //chartControl.CrosshairOptions.ShowValueLine = true;                                                    //显示X轴线
            //chartControl.CrosshairOptions.ValueLineColor = Color.Blue;
        }
Пример #17
0
        public static void InitializeSeparatePaneIndicator(ChartControl chart, SeparatePaneIndicator separatePaneIndicator)
        {
            XYDiagram diagram = chart.Diagram as XYDiagram;

            if (diagram != null)
            {
                XYDiagramPane pane = new XYDiagramPane(separatePaneIndicator.Name + " Pane");
                pane.Tag = separatePaneIndicator.Tag;
                diagram.Panes.Add(pane);
                SecondaryAxisY axisY = new SecondaryAxisY(separatePaneIndicator.Name + " Axis");
                axisY.Tag                            = separatePaneIndicator.Tag;
                axisY.Alignment                      = AxisAlignment.Far;
                axisY.GridLines.Visible              = true;
                axisY.GridLines.MinorVisible         = true;
                axisY.WholeRange.AlwaysShowZeroLevel = false;
                diagram.SecondaryAxesY.Add(axisY);
                separatePaneIndicator.Pane  = pane;
                separatePaneIndicator.AxisY = axisY;
                InitializeNewPaneLegend(chart, separatePaneIndicator);
                UpdateAxisXVisibilityInPanes(diagram);
            }
        }
Пример #18
0
        public static void AddSecondaryAxisY(this ChartControl chart, Series series)
        {
            if (chart.Diagram == null)
            {
                return;
            }
            chart.Series.Add(series);
            SecondaryAxisY myAxisY = new SecondaryAxisY("my Y-Axis");

            ((XYDiagram)chart.Diagram).SecondaryAxesY.Clear();
            ((XYDiagram)chart.Diagram).SecondaryAxesY.Add(myAxisY);


            // Assign the series2 to the created axes.
            ((LineSeriesView)series.View).AxisY = myAxisY;
            myAxisY.Title.Text       = series.Name;
            myAxisY.Title.Visibility = DefaultBoolean.True;
            myAxisY.Title.TextColor  = Color.Blue;
            myAxisY.Label.TextColor  = Color.Blue;

            myAxisY.Color = Color.Blue;
        }
Пример #19
0
        private void Form1_Load(object sender, EventArgs e)
        {
            PortDetailSetting();
            btnDBOpen.Enabled = true;
            btnOpen.Enabled   = false;
            btnClose.Enabled  = false;
            DataTable();

            SeriesDATA[0] = new Series("Temperature", ViewType.Line);
            SeriesDATA[1] = new Series("Humidity", ViewType.Line);
            SeriesDATA[2] = new Series("CO2", ViewType.Line);
            SeriesDATA[3] = new Series("Movement", ViewType.Line);

            chartControl.Series.Add(SeriesDATA[0]);
            chartControl.Series.Add(SeriesDATA[1]);
            chartControl.Series.Add(SeriesDATA[2]);
            chartControl.Series.Add(SeriesDATA[3]);

            XYDiagram diagram = (XYDiagram)chartControl.Diagram;

            diagram.AxisX.Label.TextPattern = "{A: HH:mm:ss}";
            diagram.AxisX.DateTimeScaleOptions.ScaleMode     = ScaleMode.Manual;
            diagram.AxisX.DateTimeScaleOptions.GridSpacing   = 1;
            diagram.AxisX.DateTimeScaleOptions.MeasureUnit   = DateTimeMeasureUnit.Second;
            diagram.AxisX.DateTimeScaleOptions.GridAlignment = DateTimeGridAlignment.Hour;

            ((XYDiagram)chartControl.Diagram).SecondaryAxesY.Clear();
            SecondaryAxisY secondAxisY = new SecondaryAxisY();

            ((XYDiagram)chartControl.Diagram).SecondaryAxesY.Add(secondAxisY);

            LineSeriesView lineView = new LineSeriesView();

            lineView       = (LineSeriesView)SeriesDATA[2].View;
            lineView.AxisY = secondAxisY;
            lineView.LineMarkerOptions.BorderVisible = false;
        }
Пример #20
0
        private DevExpressAxis retrieveAxisView()
        {
            if (AxisType == AxisTypes.X)
            {
                return(xyDiagram.AxisX);
            }

            if (AxisType == AxisTypes.Y)
            {
                return(xyDiagram.AxisY);
            }

            int       axisTypeIndex       = (int)AxisType;
            const int secondaryAxisOffset = (int)AxisTypes.Y2;

            // create yN-Axis, if necessary, and also the preceding yN-Axes
            for (int i = xyDiagram.SecondaryAxesY.Count; i <= axisTypeIndex - secondaryAxisOffset; i++)
            {
                var typeOfAxisView = EnumHelper.AllValuesFor <AxisTypes>().ElementAt(i + secondaryAxisOffset);
                var secondaryAxisY = new SecondaryAxisY(typeOfAxisView.ToString());
                xyDiagram.SecondaryAxesY.Add(secondaryAxisY);
            }
            return(xyDiagram.SecondaryAxesY[axisTypeIndex - secondaryAxisOffset]);
        }
Пример #21
0
        /// <summary>
        /// 创建图表的第二坐标系
        /// </summary>
        /// <param name="series">Series对象</param>
        /// <returns></returns>
        private SecondaryAxisY CreateAxisY(Series series)
        {
            SecondaryAxisY myAxis = new SecondaryAxisY(series.Name);
            ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Add(myAxis);
            ((LineSeriesView)series.View).AxisY = myAxis;
            myAxis.Title.Text = series.Name;
            myAxis.Title.Alignment = StringAlignment.Far; //顶部对齐
            myAxis.Title.Visible = true; //显示标题
            myAxis.Title.Font = new Font("宋体", 9.0f);

            Color color = series.View.Color;//设置坐标的颜色和图表线条颜色一致

            myAxis.Title.TextColor = color;
            myAxis.Label.TextColor = color;
            myAxis.Color = color;

            return myAxis;
        }
        private void BindingChartData()
        {
            try
            {
                this.Cursor = Cursors.WaitCursor;
                // chartControl1.Titles.Add(new ChartTitle { Text = "Real-Time Charting" });
                dataPoints.Clear();
                dt = SEL_SMT_INST_SET_CHART(ComVar.Var._strValue1, ComVar.Var._strValue2);

                BindingGridData(dt);

                DevExpress.XtraCharts.LineSeriesView   lineSeriesView1   = new DevExpress.XtraCharts.LineSeriesView();
                DevExpress.XtraCharts.LineSeriesView   lineSeriesView2   = new DevExpress.XtraCharts.LineSeriesView();
                DevExpress.XtraCharts.LineSeriesView   lineSeriesView3   = new DevExpress.XtraCharts.LineSeriesView();
                DevExpress.XtraCharts.LineSeriesView   lineSeriesView4   = new DevExpress.XtraCharts.LineSeriesView();
                DevExpress.XtraCharts.PointSeriesLabel pointSeriesLabel4 = new DevExpress.XtraCharts.PointSeriesLabel();

                Series series = new Series("Upper", ViewType.Line);
                series.ChangeView(ViewType.Line);
                series.DataSource         = dataPoints;
                series.ArgumentDataMember = "sArgument";
                series.ValueDataMembers.AddRange("UP_QTY");
                series.CrosshairLabelPattern = "{V:#,#} Prs";
                //format
                //lineSeriesView1.MarkerVisibility = DevExpress.Utils.DefaultBoolean.True;
                lineSeriesView1.LineStyle.Thickness = 2;
                series.View = lineSeriesView1;
                Series series2 = new Series("Finish Sole", ViewType.Line);
                series2.ChangeView(ViewType.Line);
                series2.DataSource         = dataPoints;
                series2.ArgumentDataMember = "sArgument";
                series2.ValueDataMembers.AddRange("FS_QTY");
                series2.CrosshairLabelPattern = "{V:#,#} Prs";
                //format
                //  lineSeriesView2.MarkerVisibility = DevExpress.Utils.DefaultBoolean.True;
                lineSeriesView2.Color = Color.Gray;
                lineSeriesView2.LineStyle.Thickness = 2;
                series2.View = lineSeriesView2;

                Series series3 = new Series("Set Balance", ViewType.Line);
                series3.ChangeView(ViewType.Line);
                series3.DataSource         = dataPoints;
                series3.ArgumentDataMember = "sArgument";
                series3.ValueDataMembers.AddRange("SET_QTY");
                series3.CrosshairLabelPattern = "{V:#,#} Prs";
                //format
                // lineSeriesView3.MarkerVisibility = DevExpress.Utils.DefaultBoolean.True;
                lineSeriesView3.LineStyle.Thickness = 2;
                series3.View = lineSeriesView3;

                Series series4 = new Series("Set Ratio", ViewType.Line);
                series4.ChangeView(ViewType.Line);
                series4.DataSource         = dataPoints;
                series4.ArgumentDataMember = "sArgument";
                series4.ValueDataMembers.AddRange("RATIO");
                series4.CrosshairLabelPattern = "{V:#.0}%";
                //pointSeriesLabel4.TextPattern = "{V:#.0}%";
                series4.LabelsVisibility = DefaultBoolean.True;
                //format
                lineSeriesView4.MarkerVisibility    = DevExpress.Utils.DefaultBoolean.True;
                lineSeriesView4.LineStyle.Thickness = 4;
                lineSeriesView4.Color = Color.Orange;
                series4.View          = lineSeriesView4;

                XYDiagram diagram = (XYDiagram)chartControl1.Diagram;

                diagram.AxisX.Label.ResolveOverlappingOptions.AllowRotate  = false;
                diagram.AxisX.Label.ResolveOverlappingOptions.AllowStagger = false;
                diagram.AxisX.WholeRange.SideMarginsValue = 0;
                diagram.DependentAxesYRange = DefaultBoolean.True;
                diagram.AxisY.WholeRange.AlwaysShowZeroLevel = false;
                diagram.AxisY.Title.Text        = "Qty (Prs)";
                diagram.AxisY.Title.Font        = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                diagram.AxisY.Title.TextColor   = Color.Blue;
                diagram.AxisY.Title.Visibility  = DefaultBoolean.True;
                diagram.AxisY.Color             = Color.DodgerBlue;
                diagram.AxisY.Label.TextPattern = "{V:#,#}";
                diagram.AxisY.Label.Font        = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                diagram.AxisY.Interlaced        = true;
                chartControl1.Series.Clear();
                chartControl1.SeriesSerializable = new DevExpress.XtraCharts.Series[] { series, series2, series3, series4 };

                //ADD SECONDARY AXISY
                SecondaryAxisY myAxisY = new SecondaryAxisY("my X-Axis");
                ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Clear();
                ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Add(myAxisY);
                ((LineSeriesView)series4.View).AxisY = myAxisY;
                myAxisY.WholeRange.SideMarginsValue  = 0;
                myAxisY.WholeRange.MinValue          = 0;
                myAxisY.WholeRange.MaxValue          = 100;
                myAxisY.Title.Text       = "Set Ratio (%)";
                myAxisY.Title.Font       = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                myAxisY.Title.TextColor  = Color.Orange;
                myAxisY.Title.Visibility = DefaultBoolean.True;
                myAxisY.Label.Font       = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                myAxisY.Color            = Color.Orange;

                //legend
                chartControl1.Legend.AlignmentHorizontal = DevExpress.XtraCharts.LegendAlignmentHorizontal.Center;
                chartControl1.Legend.AlignmentVertical   = DevExpress.XtraCharts.LegendAlignmentVertical.TopOutside;
                chartControl1.Legend.Direction           = DevExpress.XtraCharts.LegendDirection.LeftToRight;
                chartControl1.Legend.Name       = "Default Legend";
                chartControl1.Legend.Font       = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                chartControl1.Legend.Visibility = DefaultBoolean.True;

                if (dt != null && dt.Rows.Count <= ViewportPointCount)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        string setTime1 = dt.Rows[i]["SET_TIME"].ToString();
                        int    UP_QTY1  = Convert.ToInt32(dt.Rows[i]["UP_QTY"]);
                        int    FS_QTY1  = Convert.ToInt32(dt.Rows[i]["FS_QTY"]);
                        int    SET_QTY1 = Convert.ToInt32(dt.Rows[i]["SET_QTY"]);
                        double RATIO1   = Convert.ToDouble(dt.Rows[i]["SET_RATIO"]);
                        dataPoints.Add(new DataRealPoint(setTime1, UP_QTY1, FS_QTY1, SET_QTY1, RATIO1));
                    }
                    isLoop = true;
                    tmrDelay.Start();
                }
                else
                {
                    isLoop = false;
                    timer1.Start();
                }


                this.Cursor = Cursors.Default;
            }
            catch { this.Cursor = Cursors.Default; }
        }
Пример #23
0
 protected void AssignCurveSeriesList(IEnumerable <Series> seriesList, XYDiagramPane pane, SecondaryAxisY axisY)
 {
     foreach (var series in seriesList)
     {
         var view = series.View.DowncastTo <XYDiagramSeriesViewBase>();
         view.Pane  = pane;
         view.AxisY = axisY;
     }
 }
        private void ConfigureIndicatorCharts(ChartSettings chartSettings)
        {
            var indicatorSeriesSettingsSet = new List <IndicatorSeriesColorSettings>();
            var indicatorAddtionalPanels   = IndicatorPanelSettings.GetAdditionalPanelsSettings(chartSettings.Period);

            //Build Series
            var viewSettingsByIndicatorType = IndicatorSeriesViewSettings.GetIndicatorSeriesViewSettings(chartSettings)
                                              .GroupBy(viewSettings => new { viewSettings.IndicatorType, viewSettings.CandlePeriod });

            foreach (var seriesViewSettings in viewSettingsByIndicatorType)
            {
                var indicatorSerieses = new List <Series>();
                var seriesViews       = new List <SeriesViewColorEachSupportBase>();

                foreach (var viewSettings in seriesViewSettings)
                {
                    SeriesViewColorEachSupportBase seriesView;

                    switch (viewSettings.ViewType)
                    {
                    case ViewType.Line:
                        seriesView = new LineSeriesView();
                        break;

                    case ViewType.Bar:
                        seriesView = new StackedBarSeriesView();
                        break;

                    case ViewType.Point:
                        seriesView = new PointSeriesView();
                        break;

                    default:
                        throw new ArgumentOutOfRangeException(nameof(viewSettings.ViewType));
                    }

                    var seriesSettings = new IndicatorSeriesColorSettings
                    {
                        IndicatorType = seriesViewSettings.Key.IndicatorType,
                        CandlePeriod  = seriesViewSettings.Key.CandlePeriod,
                    };
                    var availableColors = IndicatorSeriesColorSettings.AvailableSeriesColors
                                          .Where(color => indicatorSeriesSettingsSet
                                                 .Where(s => s.IndicatorType == seriesViewSettings.Key.IndicatorType && s.CandlePeriod == seriesViewSettings.Key.CandlePeriod)
                                                 .All(s => s.SeriesColor != color))
                                          .ToList();
                    seriesSettings.SeriesColor = availableColors.Any() ? availableColors.First() : IndicatorSeriesColorSettings.LastDefaultColor;
                    indicatorSeriesSettingsSet.Add(seriesSettings);

                    seriesView.Color = seriesSettings.SeriesColor;
                    seriesViews.Add(seriesView);

                    var indicatorSeries = new Series(viewSettings.IndicatorValue, viewSettings.ViewType);
                    indicatorSeries.ArgumentScaleType  = ScaleType.DateTime;
                    indicatorSeries.LabelsVisibility   = DevExpress.Utils.DefaultBoolean.False;
                    indicatorSeries.ArgumentDataMember = "Moment";
                    indicatorSeries.ValueDataMembers.AddRange(viewSettings.IndicatorValue);
                    indicatorSeries.View = seriesView;
                    indicatorSerieses.Add(indicatorSeries);
                }

                var panelSettings =
                    indicatorAddtionalPanels.FirstOrDefault(s =>
                                                            s.AssignedIndicators.Any(tuple => tuple.Item1 == seriesViewSettings.Key.IndicatorType && tuple.Item2 == seriesViewSettings.Key.CandlePeriod));
                if (panelSettings != null)
                {
                    if (panelSettings.Panel == null || panelSettings.AxisY == null)
                    {
                        var pane = new XYDiagramPane();
                        ((XYDiagram)chartControl.Diagram).Panes.Add(pane);
                        panelSettings.Panel = pane;

                        var axisY = new SecondaryAxisY();
                        ((XYDiagram)chartControl.Diagram).SecondaryAxesY.Add(axisY);
                        panelSettings.AxisY = axisY;
                    }
                    foreach (var seriesView in seriesViews)
                    {
                        seriesView.Pane  = panelSettings.Panel;
                        seriesView.AxisY = panelSettings.AxisY;
                    }
                }
                else
                {
                    foreach (var seriesView in seriesViews)
                    {
                        seriesView.Pane  = ((XYDiagram)chartControl.Diagram).DefaultPane;
                        seriesView.AxisY = ((XYDiagram)chartControl.Diagram).AxisY;
                    }
                }

                chartControl.Series.AddRange(indicatorSerieses.ToArray());
            }
        }
Пример #25
0
        private void InitChartControl()
        {
            //Series series1 = new Series("1", ViewType.Line);
            //for (int rowIdx = 0; rowIdx < 10; rowIdx++)
            //{
            //    series1.Points.Add(new SeriesPoint(rowIdx, rowIdx));
            //}

            //Series series2 = new Series("1", ViewType.Line);
            //for (int rowIdx = 0; rowIdx < 10; rowIdx++)
            //{
            //    series2.Points.Add(new SeriesPoint(rowIdx, rowIdx + 10));
            //}

            //Series series3 = new Series("1", ViewType.Line);
            //for (int rowIdx = 0; rowIdx < 10; rowIdx++)
            //{
            //    series3.Points.Add(new SeriesPoint(rowIdx, rowIdx + 20));
            //}

            XYDiagram        xyDiagram1        = new XYDiagram();
            var              xyDiagramPane1    = new XYDiagramPane();
            SecondaryAxisY   secondaryAxisY1   = new SecondaryAxisY();
            Series           series1           = new Series();
            PointSeriesLabel pointSeriesLabel1 = new PointSeriesLabel();
            SeriesPoint      seriesPoint1      = new SeriesPoint(new DateTime(2008, 6, 11, 6, 0, 0, 0), new object[] {
                ((object)(56.48D))
            });
            SeriesPoint seriesPoint2 = new SeriesPoint(new DateTime(2008, 6, 11, 3, 0, 0, 0), new object[] {
                ((object)(53.78D))
            });
            LineSeriesView   lineSeriesView1   = new LineSeriesView();
            Series           series2           = new Series();
            PointSeriesLabel pointSeriesLabel2 = new PointSeriesLabel();
            SeriesPoint      seriesPoint3      = new SeriesPoint(new DateTime(2008, 6, 11, 6, 0, 0, 0), new object[] {
                ((object)(1023D))
            });
            SeriesPoint seriesPoint4 = new SeriesPoint(new System.DateTime(2008, 6, 11, 3, 0, 0, 0), new object[] {
                ((object)(1021D))
            });
            AreaSeriesView areaSeriesView1 = new AreaSeriesView();
            ChartTitle     chartTitle1     = new ChartTitle();

            ((ISupportInitialize)(chartControl4)).BeginInit();
            ((ISupportInitialize)(xyDiagram1)).BeginInit();
            ((ISupportInitialize)(xyDiagramPane1)).BeginInit();
            ((ISupportInitialize)(secondaryAxisY1)).BeginInit();
            ((ISupportInitialize)(series1)).BeginInit();
            ((ISupportInitialize)(pointSeriesLabel1)).BeginInit();
            ((ISupportInitialize)(lineSeriesView1)).BeginInit();
            ((ISupportInitialize)(series2)).BeginInit();
            ((ISupportInitialize)(pointSeriesLabel2)).BeginInit();
            ((ISupportInitialize)(areaSeriesView1)).BeginInit();
            this.SuspendLayout();


            chartControl4.AutoLayout = false;
            chartControl4.CrosshairOptions.ArgumentLineColor           = System.Drawing.Color.DeepSkyBlue;
            chartControl4.CrosshairOptions.ArgumentLineStyle.Thickness = 2;
            chartControl4.CrosshairOptions.GroupHeaderPattern          = "{A:d MMMM,  H:mm}";
            chartControl4.CrosshairOptions.ShowOnlyInFocusedPane       = false;
            chartControl4.DataBindings = null;


            xyDiagram1.AxisX.DateTimeScaleOptions.AutoGrid      = false;
            xyDiagram1.AxisX.DateTimeScaleOptions.GridAlignment = DevExpress.XtraCharts.DateTimeGridAlignment.Hour;
            xyDiagram1.AxisX.DateTimeScaleOptions.GridSpacing   = 6D;
            xyDiagram1.AxisX.DateTimeScaleOptions.MeasureUnit   = DevExpress.XtraCharts.DateTimeMeasureUnit.Hour;
            xyDiagram1.AxisX.GridLines.Visible                            = true;
            xyDiagram1.AxisX.Interlaced                                   = true;
            xyDiagram1.AxisX.Label.Staggered                              = true;
            xyDiagram1.AxisX.Label.TextPattern                            = "{A:dd/MM HH:mm}";
            xyDiagram1.AxisX.Title.Text                                   = "Date";
            xyDiagram1.AxisX.VisibleInPanesSerializable                   = "";
            xyDiagram1.AxisX.VisualRange.Auto                             = false;
            xyDiagram1.AxisX.VisualRange.MaxValueSerializable             = "06/11/2008 06:00:00.000";
            xyDiagram1.AxisX.VisualRange.MinValueSerializable             = "06/11/2008 03:00:00.000";
            xyDiagram1.AxisY.GridLines.MinorVisible                       = true;
            xyDiagram1.AxisY.Title.Font                                   = new System.Drawing.Font("Tahoma", 10F);
            xyDiagram1.AxisY.Title.Text                                   = "Temperature, F";
            xyDiagram1.AxisY.Title.Visibility                             = DevExpress.Utils.DefaultBoolean.True;
            xyDiagram1.AxisY.VisibleInPanesSerializable                   = "-1";
            xyDiagram1.AxisY.WholeRange.AlwaysShowZeroLevel               = false;
            xyDiagram1.DefaultPane.ScrollBarOptions.XAxisScrollBarVisible = false;
            xyDiagram1.DefaultPane.ScrollBarOptions.YAxisScrollBarVisible = false;
            xyDiagram1.DefaultPane.Weight                                 = 2D;
            xyDiagram1.EnableAxisXScrolling                               = true;
            xyDiagram1.PaneDistance = 4;
            xyDiagramPane1.Name     = "Pane 1";
            xyDiagramPane1.PaneID   = 0;
            xyDiagramPane1.ScrollBarOptions.XAxisScrollBarVisible = false;
            xyDiagramPane1.ScrollBarOptions.YAxisScrollBarVisible = false;
            xyDiagram1.Panes.AddRange(new DevExpress.XtraCharts.XYDiagramPane[] {
                xyDiagramPane1
            });


            secondaryAxisY1.Alignment = DevExpress.XtraCharts.AxisAlignment.Near;
            secondaryAxisY1.AxisID    = 0;
            secondaryAxisY1.GridLines.MinorVisible = true;
            secondaryAxisY1.GridLines.Visible      = true;
            secondaryAxisY1.Name = "secondaryAxisY1";
            secondaryAxisY1.NumericScaleOptions.AutoGrid    = false;
            secondaryAxisY1.NumericScaleOptions.GridSpacing = 4D;
            secondaryAxisY1.Title.Font                       = new System.Drawing.Font("Tahoma", 10F);
            secondaryAxisY1.Title.Text                       = "Pressure, mbar";
            secondaryAxisY1.Title.Visibility                 = DevExpress.Utils.DefaultBoolean.True;
            secondaryAxisY1.VisibleInPanesSerializable       = "0";
            secondaryAxisY1.VisualRange.Auto                 = false;
            secondaryAxisY1.VisualRange.AutoSideMargins      = false;
            secondaryAxisY1.VisualRange.MaxValueSerializable = "1025";
            secondaryAxisY1.VisualRange.MinValueSerializable = "1014";
            secondaryAxisY1.VisualRange.SideMarginsValue     = 0D;
            secondaryAxisY1.WholeRange.AlwaysShowZeroLevel   = false;
            secondaryAxisY1.WholeRange.Auto                  = false;
            secondaryAxisY1.WholeRange.AutoSideMargins       = false;
            secondaryAxisY1.WholeRange.MaxValueSerializable  = "1025";
            secondaryAxisY1.WholeRange.MinValueSerializable  = "1014";
            secondaryAxisY1.WholeRange.SideMarginsValue      = 0D;
            xyDiagram1.SecondaryAxesY.AddRange(new DevExpress.XtraCharts.SecondaryAxisY[] {
                secondaryAxisY1
            });



            chartControl4.Diagram = xyDiagram1;
            chartControl4.Dock    = System.Windows.Forms.DockStyle.Fill;
            chartControl4.Legend.AlignmentHorizontal = DevExpress.XtraCharts.LegendAlignmentHorizontal.Left;
            chartControl4.Legend.AlignmentVertical   = DevExpress.XtraCharts.LegendAlignmentVertical.BottomOutside;
            chartControl4.Legend.Direction           = DevExpress.XtraCharts.LegendDirection.LeftToRight;
            chartControl4.Legend.Name = "Default Legend";
            chartControl4.Location    = new System.Drawing.Point(0, 0);
            chartControl4.Name        = "chart04";


            series1.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.DateTime;
            pointSeriesLabel1.Angle   = 90;
            series1.Label             = pointSeriesLabel1;
            series1.Name = "Temperature (F)";
            series1.Points.AddRange(new DevExpress.XtraCharts.SeriesPoint[] {
                seriesPoint1,
                seriesPoint2
            });
            series1.View = lineSeriesView1;
            series2.ArgumentScaleType    = DevExpress.XtraCharts.ScaleType.DateTime;
            pointSeriesLabel2.Angle      = 90;
            pointSeriesLabel2.LineLength = 5;
            series2.Label            = pointSeriesLabel2;
            series2.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False;
            series2.Name             = "Pressure (mbar)";
            series2.Points.AddRange(new DevExpress.XtraCharts.SeriesPoint[] {
                seriesPoint3,
                seriesPoint4
            });
            areaSeriesView1.AxisYName        = "secondaryAxisY1";
            areaSeriesView1.MarkerVisibility = DevExpress.Utils.DefaultBoolean.False;
            areaSeriesView1.PaneName         = "Pane 1";
            areaSeriesView1.Transparency     = ((byte)(0));
            series2.View = areaSeriesView1;

            this.chartControl4.SeriesSerializable = new DevExpress.XtraCharts.Series[] {
                series1,
                series2
            };
            chartControl4.Size     = new System.Drawing.Size(1333, 548);
            chartControl4.TabIndex = 3;
            chartTitle1.Text       = "Weather in London";
            chartControl4.Titles.AddRange(new DevExpress.XtraCharts.ChartTitle[] {
                chartTitle1
            });
            chartControl4.ToolTipOptions.ShowForPoints = false;


            ((ISupportInitialize)(xyDiagramPane1)).EndInit();
            ((ISupportInitialize)(secondaryAxisY1)).EndInit();
            ((ISupportInitialize)(xyDiagram1)).EndInit();
            ((ISupportInitialize)(pointSeriesLabel1)).EndInit();
            ((ISupportInitialize)(lineSeriesView1)).EndInit();
            ((ISupportInitialize)(series1)).EndInit();
            ((ISupportInitialize)(pointSeriesLabel2)).EndInit();
            ((ISupportInitialize)(areaSeriesView1)).EndInit();
            ((ISupportInitialize)(series2)).EndInit();
            ((ISupportInitialize)(this.chartControl4)).EndInit();
            this.ResumeLayout(false);
        }
Пример #26
0
        private void CreateChart(DataTable _dt, DevExpress.XtraCharts.ChartControl _chartControl)
        {
            try
            {
                _dt.Rows.RemoveAt(0);
                ((XYDiagram)_chartControl.Diagram).EnableAxisXZooming = true;
                //((XYDiagram)barChartControl.Diagram).AxisX.NumericScaleOptions.ScaleMode = DevExpress.XtraCharts.ScaleMode.Automatic;
                ((XYDiagram)_chartControl.Diagram).AxisX.VisualRange.Auto             = false;
                ((XYDiagram)_chartControl.Diagram).AxisX.VisualRange.AutoSideMargins  = false;
                ((XYDiagram)_chartControl.Diagram).AxisX.VisualRange.SideMarginsValue = 2;
                ((XYDiagram)_chartControl.Diagram).AxisX.Label.Angle      = 0;
                ((XYDiagram)_chartControl.Diagram).AxisX.Label.Font       = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Bold);
                ((XYDiagram)_chartControl.Diagram).AxisX.Title.Visibility = DevExpress.Utils.DefaultBoolean.True;
                ((XYDiagram)_chartControl.Diagram).AxisX.Title.Text       = "Model";

                ((XYDiagram)_chartControl.Diagram).AxisX.Title.Font = new Font("Calibri", 14F, System.Drawing.FontStyle.Bold);

                ((XYDiagram)_chartControl.Diagram).AxisY.Label.Font        = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Bold);
                ((XYDiagram)_chartControl.Diagram).AxisY.Title.Visibility  = DevExpress.Utils.DefaultBoolean.True;
                ((XYDiagram)_chartControl.Diagram).AxisY.Title.Text        = " Inventory (Prs)";
                ((XYDiagram)_chartControl.Diagram).AxisY.Label.TextPattern = "{V:###,###}";
                ((XYDiagram)_chartControl.Diagram).AxisY.Title.Font        = new Font("Calibri", 14F, System.Drawing.FontStyle.Bold);

                ((XYDiagram)_chartControl.Diagram).AxisY.Title.TextColor = Color.DarkOrange;
                ((XYDiagram)_chartControl.Diagram).AxisX.Title.TextColor = Color.DarkOrange;

                ((XYDiagram)_chartControl.Diagram).AxisX.Label.Angle = 50;

                DevExpress.XtraCharts.LineSeriesView          splineSeriesView1        = new DevExpress.XtraCharts.LineSeriesView();
                DevExpress.XtraCharts.SideBySideBarSeriesView sideBySideBarSeriesView1 = new DevExpress.XtraCharts.SideBySideBarSeriesView();
                DevExpress.XtraCharts.XYSeriesUnwindAnimation xySeriesSlideAnimation1  = new DevExpress.XtraCharts.XYSeriesUnwindAnimation();

                _chartControl.AnimationStartMode = DevExpress.XtraCharts.ChartAnimationMode.OnDataChanged;

                _chartControl.Series.Clear();
                _chartControl.Titles.Clear();


                Series series1 = new Series("Inventory", ViewType.Bar);
                Series series2 = new Series("Leadtime", ViewType.Line);
                Legend lgBox   = new Legend();
                lgBox.Visibility = DevExpress.Utils.DefaultBoolean.True;
                lgBox.Font       = new Font("Calibri", 16F, System.Drawing.FontStyle.Bold);

                if (_dt != null && _dt.Rows.Count > 0)
                {
                    for (int iRow = 0; iRow < _dt.Rows.Count; iRow++)
                    {
                        if (_dt.Rows[iRow]["INV_QTY"].ToString() != "")
                        {
                            series1.Points.Add(new SeriesPoint(_dt.Rows[iRow]["MODEL_NAME"].ToString(), Convert.ToInt32(_dt.Rows[iRow]["INV_QTY"].ToString())));
                        }
                        else
                        {
                            series1.Points.Add(new SeriesPoint(_dt.Rows[iRow]["MODEL_NAME"].ToString(), 0));
                        }

                        if (_dt.Rows[iRow]["LEADTIME"].ToString() != "")
                        {
                            series2.Points.Add(new SeriesPoint(_dt.Rows[iRow]["MODEL_NAME"].ToString(), Convert.ToDouble(_dt.Rows[iRow]["LEADTIME"].ToString())));
                        }
                        else
                        {
                            series2.Points.Add(new SeriesPoint(_dt.Rows[iRow]["MODEL_NAME"].ToString(), 0));
                        }
                    }
                }



                sideBySideBarSeriesView1.ColorEach      = false;
                sideBySideBarSeriesView1.Shadow.Visible = false;
                series1.LabelsVisibility  = DevExpress.Utils.DefaultBoolean.True;
                series1.Label.TextPattern = "{V:###,###}";
                series1.ArgumentScaleType = ScaleType.Qualitative;

                series1.View = sideBySideBarSeriesView1;


                splineSeriesView1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
                splineSeriesView1.LineStyle.Thickness     = 2;
                splineSeriesView1.SeriesAnimation         = xySeriesSlideAnimation1;
                splineSeriesView1.MarkerVisibility        = DevExpress.Utils.DefaultBoolean.True;
                splineSeriesView1.LineMarkerOptions.Size  = 15;
                splineSeriesView1.LineMarkerOptions.Color = Color.DodgerBlue;

                series2.Label.BackColor   = Color.White;
                series2.Label.Font        = new System.Drawing.Font("Calibri", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                series2.LabelsVisibility  = DevExpress.Utils.DefaultBoolean.True;
                series2.Label.TextPattern = "{V:##0.#}";
                series2.ArgumentScaleType = ScaleType.Qualitative;
                series2.View = splineSeriesView1;

                // Access the type-specific options of the diagram.

                _chartControl.Series.AddRange(new Series[] { series1, series2 });

                SecondaryAxisY myAxisY = new SecondaryAxisY("my Y-Axis");

                //myAxisY.VisualRange.SetMinMaxValues(0, 20);
                myAxisY.Title.Text             = "Leadtime (Days)";
                myAxisY.Tickmarks.MinorVisible = true;

                //((XYDiagram)barChartControl.Diagram).AxisY.WholeRange.SetMinMaxValues(90, 100);
                myAxisY.Label.Font        = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                myAxisY.Title.Font        = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                myAxisY.Label.TextPattern = "{V:##0.##}";
                myAxisY.Title.TextColor   = Color.DarkOrange;
                myAxisY.Title.Visibility  = DevExpress.Utils.DefaultBoolean.Default;
                ((XYDiagram)_chartControl.Diagram).SecondaryAxesY.Clear();
                ((XYDiagram)_chartControl.Diagram).SecondaryAxesY.Add(myAxisY);

                ((LineSeriesView)series2.View).AxisY = myAxisY;



                // _chartControl.Legends.Add(lgBox);


                // Add a title to the chart (if necessary).
                // _chartControl.Titles.Add(new ChartTitle());
                //_chartControl.Titles[0].Text = "Production";
            }
            catch (Exception EX)
            {
            }
        }
Пример #27
0
 public static void SetAxisYLabelPercent(this SecondaryAxisY y)
 {
     y.Label.TextPattern = "{V:P0}";
 }
Пример #28
0
        public frmQtyReport(string ad_user_id, string ad_org_id, DataTable dtProcess)
        {
            InitializeComponent();
            dateEdit.DateTime  = DateTime.Now;
            dateEdit1.DateTime = DateTime.Now;
            this.ad_user_id    = ad_user_id;
            this.ad_org_id     = ad_org_id;
            this.dtProcess     = dtProcess;
            dtboPhan           = BUS_BoPhan.LoadBoPhan(ad_org_id);
            utility.SearchProcess(this.Controls, dtProcess);

            dateEdit.DateTime  = DateTime.Now;
            dateEdit1.DateTime = DateTime.Now;
            dateEdit2.DateTime = DateTime.Now;

            #region Chart control 1
            // Create an empty Bar series and add it to the chart.
            chartControl1.Series.Add(series1);
            series1.View.Color = Color.Green;

            chartControl1.Series.Add(series2);
            series2.View.Color = Color.DarkGoldenrod;

            chartControl1.Series.Add(series3);
            series3.View.Color = Color.Red;

            //Show point view lable and customize it
            chartControl1.Series["Sản lượng mục tiêu"].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
            SideBySideBarSeriesLabel label1 = chartControl1.Series["Sản lượng mục tiêu"].Label as SideBySideBarSeriesLabel;
            if (label1 != null)
            {
                label1.Position = BarSeriesLabelPosition.Top;
            }

            chartControl1.Series["Sản lượng thực tế"].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
            SideBySideBarSeriesLabel label2 = chartControl1.Series["Sản lượng thực tế"].Label as SideBySideBarSeriesLabel;
            if (label2 != null)
            {
                label2.Position = BarSeriesLabelPosition.Top;
            }

            chartControl1.Series["Tỉ lệ đạt mục tiêu(%)"].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
            SideBySideBarSeriesLabel label3 = chartControl1.Series["Tỉ lệ đạt mục tiêu(%)"].Label as SideBySideBarSeriesLabel;
            if (label3 != null)
            {
                label3.Position = BarSeriesLabelPosition.Top;
            }

            // Cast Diagram to the XYDiagram type.
            XYDiagram diagram = chartControl1.Diagram as XYDiagram;
            diagram.AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True;
            diagram.AxisY.Title.Text       = "Sản lượng (k)";
            diagram.AxisY.Title.Font       = new Font("Times New Roman", 10, FontStyle.Regular);

            // Add a title to the chart (if necessary).
            chartTitle1.Text = "BIỂU ĐỒ SẢN LƯỢNG HẰNG NGÀY\n(" + DateTime.Now.ToString("dd/MM/yyyy") + ")";
            chartTitle1.Font = new Font("Times New Roman", 15, FontStyle.Bold);
            chartControl1.Titles.Add(chartTitle1);

            // Control legend & position
            chartControl1.Legend.Visibility          = DevExpress.Utils.DefaultBoolean.True;
            chartControl1.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Center;
            chartControl1.Legend.AlignmentVertical   = LegendAlignmentVertical.BottomOutside;
            chartControl1.Legend.Direction           = LegendDirection.LeftToRight;
            chartControl1.Legend.EquallySpacedItems  = true;

            //Create secondary Y-Axis, and add them to the chart's diagram
            SecondaryAxisY myAxisY = new SecondaryAxisY("Y-Axis");
            ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Add(myAxisY);

            //Assign series3 to the created axis
            ((LineSeriesView)series3.View).AxisY = myAxisY;

            //Customize the apperance of the secondary axis
            myAxisY.Title.Text       = "Tỉ lệ đạt mục tiêu(%)";
            myAxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True;
            myAxisY.Title.TextColor  = Color.Red;
            myAxisY.Title.Font       = new Font("Times New Roman", 10, FontStyle.Regular);
            myAxisY.Label.TextColor  = Color.Red;
            myAxisY.Color            = Color.Red;
            #endregion

            #region Chart control 2
            // Create an empty Bar series and add it to the chart.
            chartControl2.Series.Add(series4);
            series4.View.Color = Color.Green;

            chartControl2.Series.Add(series5);
            series5.View.Color = Color.DarkGoldenrod;

            chartControl2.Series.Add(series6);
            series6.View.Color = Color.Red;

            //Show point view lable and customize it
            chartControl2.Series["Sản lượng mục tiêu"].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
            SideBySideBarSeriesLabel label4 = chartControl2.Series["Sản lượng mục tiêu"].Label as SideBySideBarSeriesLabel;
            if (label4 != null)
            {
                label4.Position = BarSeriesLabelPosition.Top;
            }

            chartControl2.Series["Sản lượng thực tế"].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
            SideBySideBarSeriesLabel label5 = chartControl2.Series["Sản lượng thực tế"].Label as SideBySideBarSeriesLabel;
            if (label5 != null)
            {
                label5.Position = BarSeriesLabelPosition.Top;
            }

            //chartControl2.Series["Tỉ lệ đạt mục tiêu(%)"].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
            //SideBySideBarSeriesLabel label6 = chartControl2.Series["Tỉ lệ đạt mục tiêu(%)"].Label as SideBySideBarSeriesLabel;
            //if (label6 != null)
            //{
            //    label6.Position = BarSeriesLabelPosition.Top;
            //}

            // Cast Diagram to the XYDiagram type.
            XYDiagram diagram2 = chartControl2.Diagram as XYDiagram;
            diagram2.AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True;
            diagram2.AxisY.Title.Text       = "Sản lượng (k)";
            diagram2.AxisY.Title.Font       = new Font("Times New Roman", 10, FontStyle.Regular);

            // Add a title to the chart (if necessary).
            chartTitle2.Text = "BIỂU ĐỒ SẢN LƯỢNG HẰNG THÁNG\n(" + "01/" + DateTime.Now.ToString("MM/yyyy") + " - " + DateTime.Now.ToString("dd/MM/yyyy") + ")";
            chartTitle2.Font = new Font("Times New Roman", 15, FontStyle.Bold);
            chartControl2.Titles.Add(chartTitle2);

            // Control legend & position
            chartControl2.Legend.Visibility          = DevExpress.Utils.DefaultBoolean.True;
            chartControl2.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Center;
            chartControl2.Legend.AlignmentVertical   = LegendAlignmentVertical.BottomOutside;
            chartControl2.Legend.Direction           = LegendDirection.LeftToRight;
            chartControl2.Legend.EquallySpacedItems  = true;

            //Create secondary Y-Axis, and add them to the chart's diagram
            SecondaryAxisY myAxisY2 = new SecondaryAxisY("Y-Axis2");
            ((XYDiagram)chartControl2.Diagram).SecondaryAxesY.Add(myAxisY2);

            //Assign series3 to the created axis
            ((LineSeriesView)series6.View).AxisY = myAxisY2;

            //Customize the apperance of the secondary axis
            myAxisY2.Title.Text       = "Tỉ lệ đạt mục tiêu(%)";
            myAxisY2.Title.Visibility = DevExpress.Utils.DefaultBoolean.True;
            myAxisY2.Title.TextColor  = Color.Red;
            myAxisY2.Title.Font       = new Font("Times New Roman", 10, FontStyle.Regular);
            myAxisY2.Label.TextColor  = Color.Red;
            myAxisY2.Color            = Color.Red;
            #endregion

            dtChart1 = BUS_SanXuat.ChartQtyDaily(DateTime.Now.ToString("yyyy-MM-dd"), ad_org_id);
            DateTime today     = DateTime.Today;
            DateTime yesterday = today.AddDays(-1);
            lblQtyNgay.Text = "Sản lượng ngày trước (k): " + BUS_SanXuat.ChartQtyTotal(yesterday.ToString("yyyy-MM-dd"), yesterday.ToString("yyyy-MM-dd"), ad_org_id);
            CreateChart1(dtChart1);

            dtChart2 = BUS_SanXuat.ChartQtyMonthly(DateTime.Now.ToString("yyyy-MM-") + "01", DateTime.Now.ToString("yyyy-MM-dd"), ad_org_id);
            DateTime currentMonth = DateTime.Today;
            DateTime lastMonth    = currentMonth.AddMonths(-1);
            lblQtyMonth.Text = "Sản lượng tháng trước (k): " + BUS_SanXuat.ChartQtyTotal(lastMonth.ToString("yyyy-MM-") + "01", lastMonth.ToString("yyyy-MM-") + "31", ad_org_id);
            CreateChart2(dtChart2);
        }
Пример #29
0
        private void BindingPareto(DevExpress.XtraCharts.ChartControl charControl, DataTable dt, string iColPoint, string iColValue, string iColPercent, string _ChartTitle, string _sYTitle, string _sXTitle)
        {
            try
            {
                ((XYDiagram)charControl.Diagram).AxisX.NumericScaleOptions.AutoGrid = true;
                ((XYDiagram)charControl.Diagram).AxisX.Title.TextColor = Color.DarkOrange;
                ((XYDiagram)charControl.Diagram).AxisX.Title.Text      = _sXTitle;
                ((XYDiagram)charControl.Diagram).AxisY.Title.TextColor = Color.DarkOrange;
                ((XYDiagram)charControl.Diagram).AxisY.Title.Text      = _sYTitle;
                ((XYDiagram)charControl.Diagram).AxisX.Title.Font      = new System.Drawing.Font("Calibri", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                ((XYDiagram)charControl.Diagram).AxisX.Label.Font      = new System.Drawing.Font("Calibri", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                ((XYDiagram)charControl.Diagram).AxisY.Title.Font      = new System.Drawing.Font("Calibri", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                ((XYDiagram)charControl.Diagram).AxisY.Label.Font      = new System.Drawing.Font("Calibri", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

                ((XYDiagram)charControl.Diagram).AxisX.Label.Angle = 50;


                DevExpress.XtraCharts.SideBySideBarSeriesView sideBySideBarSeriesView1 = new DevExpress.XtraCharts.SideBySideBarSeriesView();
                DevExpress.XtraCharts.SplineSeriesView        splineSeriesView1        = new DevExpress.XtraCharts.SplineSeriesView();
                DevExpress.XtraCharts.XYSeriesUnwindAnimation xySeriesSlideAnimation1  = new DevExpress.XtraCharts.XYSeriesUnwindAnimation();


                sideBySideBarSeriesView1.ColorEach = true;

                charControl.Series.Clear();
                charControl.AnimationStartMode = DevExpress.XtraCharts.ChartAnimationMode.OnDataChanged;

                //charControl.SeriesSorting = SortingMode.Descending;


                Series series1 = new Series(_ChartTitle, ViewType.Bar);
                Series series2 = new Series("%", ViewType.Spline);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    series1.Points.Add(new SeriesPoint(dt.Rows[i][iColPoint].ToString(), dt.Rows[i][iColValue].ToString()));
                    series2.Points.Add(new SeriesPoint(dt.Rows[i][iColPoint].ToString(), dt.Rows[i][iColPercent].ToString()));
                }


                series1.ArgumentScaleType          = ScaleType.Qualitative;
                series2.ArgumentScaleType          = ScaleType.Qualitative;
                series1.LabelsVisibility           = DevExpress.Utils.DefaultBoolean.True;
                sideBySideBarSeriesView1.ColorEach = false;
                series1.View       = sideBySideBarSeriesView1;
                series1.Label.Font = new System.Drawing.Font("Calibri", 8.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

                splineSeriesView1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
                splineSeriesView1.LineStyle.Thickness = 2;
                splineSeriesView1.SeriesAnimation     = xySeriesSlideAnimation1;

                splineSeriesView1.MarkerVisibility        = DevExpress.Utils.DefaultBoolean.True;
                splineSeriesView1.LineMarkerOptions.Size  = 15;
                splineSeriesView1.LineMarkerOptions.Color = Color.DodgerBlue;

                series2.Label.BackColor   = Color.White;
                series2.Label.Font        = new System.Drawing.Font("Calibri", 8.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                series2.Label.TextPattern = "{V:###.##}%";
                series2.LabelsVisibility  = DevExpress.Utils.DefaultBoolean.True;
                series2.View = splineSeriesView1;


                charControl.Series.AddRange(new Series[] { series1, series2 });


                //((XYDiagram)charControl.Diagram).AxisY.VisualRange.SideMarginsValue = 1;

                charControl.Titles[0].Text = _ChartTitle;
                charControl.Titles[0].Font = new System.Drawing.Font("Calibri", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

                SecondaryAxisY myAxisY = new SecondaryAxisY("my Y-Axis");
                ((XYDiagram)charControl.Diagram).SecondaryAxesY.Clear();
                ((XYDiagram)charControl.Diagram).SecondaryAxesY.Add(myAxisY);
                myAxisY.VisualRange.SetMinMaxValues(0, 95);
                myAxisY.Title.Text             = "%";
                myAxisY.Tickmarks.MinorVisible = false;

                //((XYDiagram)barChartControl.Diagram).AxisY.WholeRange.SetMinMaxValues(90, 100);
                myAxisY.Label.Font        = new System.Drawing.Font("Calibri", 11F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                myAxisY.Title.Font        = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                myAxisY.Label.TextPattern = "{V:###.##}";
                myAxisY.Title.TextColor   = Color.DarkOrange;
                myAxisY.Title.Visibility  = DevExpress.Utils.DefaultBoolean.Default;

                ((SplineSeriesView)series2.View).AxisY = myAxisY;
                ((XYDiagram)charControl.Diagram).AxisX.QualitativeScaleOptions.AutoGrid = false;
            }
            catch (Exception ex)
            {
            }
        }
Пример #30
0
        public MyUserControl01(string eqp, Color eqlColor, string la1, string la2, string la3, int chartSize)
        {
            InitializeComponent();
            string eqpName = eqp;

            labelControl1.Text = la1;
            labelControl2.Text = la2;
            labelControl3.Text = la3;


            tileBar1.Orientation = System.Windows.Forms.Orientation.Horizontal;
            tileBar1.AppearanceItem.Normal.BackColor = Color.FromArgb(65, 168, 207);
            tileBar1.AppearanceItem.Normal.ForeColor = Color.White;
            TileBarGroup group1 = new TileBarGroup();

            tileBar1.Groups.Add(group1);
            tileBar1.WideTileWidth = 120;
            tileBar1.ItemSize      = 65;
            tileBar1.Padding       = new Padding()
            {
                All = 0, Left = 10
            };
            tileBar1.HorizontalContentAlignment = DevExpress.Utils.HorzAlignment.Near;
            tileBar1.VerticalContentAlignment   = DevExpress.Utils.VertAlignment.Top;
            TileBarItem tile1 = new TileBarItem();

            tile1.ItemSize = DevExpress.XtraBars.Navigation.TileBarItemSize.Wide;
            tile1.AppearanceItem.Normal.BackColor = eqlColor;
            tile1.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
            tile1.Elements.Add(new TileItemElement()
            {
                Text = "", Image = DevExpress.Images.ImageResourceCache.Default.GetImage("office2013/gauges/gaugestylethreeforthcircular_32x32.png"), ImageAlignment = TileItemContentAlignment.BottomRight
            });
            tile1.Elements.Add(new TileItemElement()
            {
                Text = string.Format("<size=8>{0}</size>", eqpName), TextAlignment = TileItemContentAlignment.TopLeft
            });
            //tile1.Elements.Add(new TileItemElement() { Text = string.Format("<size=8>{0}</size><br><size=8>Equipment<br>running rate</size>", eqpName), TextAlignment = TileItemContentAlignment.TopLeft });
            group1.Items.Add(tile1);

            tile1.ItemClick += Tile1_ItemClick;

            var series = new Series(" ", ViewType.FullStackedArea);

            series.ArgumentScaleType = ScaleType.Auto;
            series.LabelsVisibility  = DefaultBoolean.True;
            chartControl1.Series.Add(series);
            this.chartControl1.Legend.TextVisible = false;
            this.chartControl1.Legend.Visibility  = DevExpress.Utils.DefaultBoolean.False;

            Random r = new Random();

            for (int x = 0; x < chartSize; x++)
            {
                if (x % 4 == 1)
                {
                    CreateSeries(x + r.Next(0, 100), Color.LightGreen);
                }
                else if (x % 4 == 2)
                {
                    CreateSeries(x + r.Next(0, 10), Color.PaleGoldenrod);
                }
                else if (x % 4 == 3)
                {
                    CreateSeries(x + r.Next(0, 5), Color.Gainsboro);
                }
                else if (x % 4 == 0)
                {
                    CreateSeries(x + r.Next(0, 20), Color.LightPink);
                }
            }
            SecondaryAxisY secondaryAxisY1 = new SecondaryAxisY();

            secondaryAxisY1.VisibleInPanesSerializable      = "-1";
            secondaryAxisY1.WholeRange.Auto                 = false;
            secondaryAxisY1.WholeRange.MaxValueSerializable = "24";
            secondaryAxisY1.WholeRange.MinValueSerializable = "1";



            //((XYDiagram)chartControl1.Diagram).AxisX.Range.SideMarginsEnabled = false;
            ((XYDiagram)chartControl1.Diagram).Rotated          = true;
            ((XYDiagram)chartControl1.Diagram).AxisX.Visibility = DevExpress.Utils.DefaultBoolean.True;
            ((XYDiagram)chartControl1.Diagram).AxisX.VisibleInPanesSerializable       = "-1";
            ((XYDiagram)chartControl1.Diagram).AxisX.VisualRange.Auto                 = false;
            ((XYDiagram)chartControl1.Diagram).AxisX.VisualRange.MaxValueSerializable = "200";
            ((XYDiagram)chartControl1.Diagram).AxisX.VisualRange.MinValueSerializable = "1";
            ((XYDiagram)chartControl1.Diagram).AxisX.WholeRange.Auto = false;
            ((XYDiagram)chartControl1.Diagram).AxisX.WholeRange.MaxValueSerializable = "200";
            ((XYDiagram)chartControl1.Diagram).AxisX.WholeRange.MinValueSerializable = "1";
            ((XYDiagram)chartControl1.Diagram).AxisY.Visibility = DevExpress.Utils.DefaultBoolean.True;
            ((XYDiagram)chartControl1.Diagram).AxisY.VisibleInPanesSerializable = "-1";
            ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.AddRange(new SecondaryAxisY[] { secondaryAxisY1 });

            //XYDiagram xyDiagram1 = new XYDiagram();
            //xyDiagram1.Rotated = true;
            //chartControl1.Diagram = xyDiagram1;
            MakePointChart();
        }
Пример #31
0
        private void GenerateReportOfSegment(double BegMeasure, double endMeasure, string outFile)
        {
            if (checkBoxRotateMap.Checked)
            {
                IFeatureLayer pCenterlineLayer    = null;
                string        pCenterlineFileName = comboBoxExCenterline.SelectedItem.ToString();
                for (int i = 0; i < pMapcontrol.LayerCount; i++)
                {
                    if (pCenterlineFileName == pMapcontrol.get_Layer(i).Name)
                    {
                        pCenterlineLayer = pMapcontrol.get_Layer(i) as IFeatureLayer;
                    }
                }
                IFeatureClass pCenterlineFC = pCenterlineLayer.FeatureClass;
                try
                {
                    IFeatureCursor pCurcor  = pCenterlineFC.Search(null, false);
                    IFeature       pFeature = pCurcor.NextFeature();
                    IGeometry      pGeo     = pFeature.Shape;
                    IMSegmentation pMS      = pGeo as IMSegmentation;
                    double         minM     = pMS.MMin;
                    double         maxM     = pMS.MMax;
                    BegMeasure = BegMeasure < minM ? minM : BegMeasure;
                    endMeasure = endMeasure > maxM ? maxM : endMeasure;
                    IPoint begPt = pMS.GetPointsAtM(BegMeasure, 0).Geometry[0] as IPoint;
                    IPoint endPt = pMS.GetPointsAtM(endMeasure, 0).Geometry[0] as IPoint;

                    ISpatialReference sourcePrj;
                    sourcePrj = pCenterlineFC.Fields.get_Field(pCenterlineFC.FindField(pCenterlineFC.ShapeFieldName)).GeometryDef.SpatialReference;
                    ISpatialReference targetPrj = pMapcontrol.Map.SpatialReference;
                    IPoint            begPtPrj;
                    IPoint            endPtPrj;
                    begPt.Project(targetPrj);
                    endPt.Project(targetPrj);
                    begPtPrj = begPt;
                    endPtPrj = endPt;
                    IActiveView pView = this.pMapcontrol.Map as IActiveView;
                    pView.ScreenDisplay.DisplayTransformation.Rotation = 0;
                    double widthHeightR = (((double)pView.ExportFrame.right - pView.ExportFrame.left) / ((double)pView.ExportFrame.bottom - pView.ExportFrame.top));
                    // Dim fw As New FileWindow(begPt, endPt, widthHeightR)
                    MCenterlineUtil fw = new MCenterlineUtil(begPtPrj, endPtPrj, widthHeightR);

                    fw.FitActiveViewTo(pView, true);

                    System.Runtime.InteropServices.Marshal.ReleaseComObject(pCurcor);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return;
                }
            }


            #region //导出arcmap 地图 export mapfram

            IPageLayout _PageLayout = this.pPageLayoutControl.PageLayout;
            SizeF       m_PageSize  = new SizeF();
            double      width;
            double      hight;



            _PageLayout.Page.QuerySize(out width, out hight);
            m_PageSize.Width  = Convert.ToSingle(width);
            m_PageSize.Height = Convert.ToSingle(hight);
            IUnitConverter pUConvert = new UnitConverterClass();
            esriUnits      ut        = _PageLayout.Page.Units;
            float          pageUnitToInchUnitScale = (float)pUConvert.ConvertUnits(1, ut, esriUnits.esriInches);



            var layerOutPageSize = m_PageSize;
            var outputDPI        = 300;
            int BandHeadWidth    = 40;

            var originalActiveView = _PageLayout as IActiveView;
            var activeView         = _PageLayout as IActiveView;
            originalActiveView.Refresh();
            var avEvents = _PageLayout as IActiveViewEvents;

            float centerX = layerOutPageSize.Width / 2;
            float centerY = layerOutPageSize.Height / 2;

            var backGroundEnv = new Envelope() as IEnvelope;
            backGroundEnv.PutCoords(0, 0, layerOutPageSize.Width, layerOutPageSize.Height);

            activeView.Extent = backGroundEnv;
            //System.Threading.Thread.Sleep(2000);

            IExport pExporter = new ExportPDF() as IExport;
            pExporter.ExportFileName = outFile;
            pExporter.Resolution     = outputDPI;

            var pExPdf = pExporter as IExportPDF;
            pExPdf.Compressed       = true;
            pExPdf.ImageCompression = esriExportImageCompression.esriExportImageCompressionDeflate;

            var screenResolution = GetCurrentScreenResolution();
            var outputResolution = outputDPI;

            ESRI.ArcGIS.esriSystem.tagRECT exportRECT;
            exportRECT.left   = 0;
            exportRECT.top    = 0;
            exportRECT.right  = (int)(activeView.ExportFrame.right * outputResolution / screenResolution) + 1;
            exportRECT.bottom = (int)(activeView.ExportFrame.bottom * outputResolution / screenResolution) + 1;

            var envelope = new Envelope() as IEnvelope;
            envelope.PutCoords(exportRECT.left, exportRECT.top, exportRECT.right, exportRECT.bottom);
            pExporter.PixelBounds = envelope;

            var hDC = pExporter.StartExporting();
            activeView.Output(hDC, outputDPI, exportRECT, backGroundEnv, null);

            pExporter.FinishExporting();
            pExporter.Cleanup();
            // MessageBox.Show("Export finished.");
            #endregion

            #region  //根据中线图层生成剖面图
            System.Drawing.Point LastBottomLeftPoint = new System.Drawing.Point();
            int         bandwidth = 0;
            PdfGraphics pGraphics = null;

            IFeatureLayer pCenterlinePointLayer = null;
            string        centerlinePointnName  = cboBoxPointLayer.SelectedItem.ToString();

            for (int i = 0; i < pMapcontrol.LayerCount; i++)
            {
                if (centerlinePointnName == pMapcontrol.get_Layer(i).Name)
                {
                    pCenterlinePointLayer = pMapcontrol.get_Layer(i) as IFeatureLayer;
                }
            }
            IQueryFilter pQF = null;
            DataTable    centerlinePointTable = AOFunctions.GDB.ITableUtil.GetDataTableFromITable(pCenterlinePointLayer.FeatureClass as ITable, pQF);
            chartControl1.Series.Clear();
            Series         series  = new Series("高程", ViewType.Line);
            Series         series2 = new Series("埋深", ViewType.Line);
            SecondaryAxisY myAxisY = new SecondaryAxisY("埋深");

            foreach (DataRow r in centerlinePointTable.Rows)
            {
                double m; double z; double underz;
                m = Convert.ToDouble(r[EvConfig.CenterlineMeasureField]);
                if (m < BegMeasure || m > endMeasure)
                {
                    continue;
                }
                if (r[EvConfig.CenterlineMeasureField] != DBNull.Value && r[EvConfig.CenterlineZField] != DBNull.Value)
                {
                    m = Convert.ToDouble(r[EvConfig.CenterlineMeasureField]);
                    z = Convert.ToDouble(r[EvConfig.CenterlineZField]);
                    series.Points.Add(new SeriesPoint(m, z));
                }
                // if (r[EvConfig.CenterlineMeasureField] != DBNull.Value && r["管道埋深("] != DBNull.Value)
                if (r[EvConfig.CenterlineMeasureField] != DBNull.Value && r[EvConfig.CenterlineBuryDepthField] != DBNull.Value)
                {
                    m = Convert.ToDouble(r[EvConfig.CenterlineMeasureField]);
                    z = Convert.ToDouble(r[EvConfig.CenterlineBuryDepthField]);
                    series2.Points.Add(new SeriesPoint(m, z));
                }
            }

            chartControl1.Series.Add(series);
            chartControl1.Series.Add(series2);
            ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Clear();
            ((XYDiagram)chartControl1.Diagram).SecondaryAxesX.Clear();
            ((XYDiagram)chartControl1.Diagram).SecondaryAxesY.Add(myAxisY);
            ((LineSeriesView)series2.View).AxisY = myAxisY;
            ((LineSeriesView)series.View).AxisY  = ((XYDiagram)chartControl1.Diagram).AxisY;
            series.ChangeView(ViewType.Line);
            ((XYDiagram)chartControl1.Diagram).AxisY.WholeRange.Auto = true;
            myAxisY.WholeRange.Auto = true;
            series2.ChangeView(ViewType.Line);
            myAxisY.Tickmarks.Visible      = true;
            myAxisY.Tickmarks.MinorVisible = false;
            ((XYDiagram)chartControl1.Diagram).AxisX.WholeRange.AutoSideMargins  = false;
            ((XYDiagram)chartControl1.Diagram).AxisX.WholeRange.SideMarginsValue = 0;
            ((XYDiagram)chartControl1.Diagram).AxisX.WholeRange.SetMinMaxValues(BegMeasure, endMeasure);
            series.ArgumentScaleType = ScaleType.Numerical;

            int ProfileMapHight = 8;

            #endregion


            #region export chartcontrol
            IGraphicsContainer pGC = _PageLayout as IGraphicsContainer;
            pGC.Reset();
            IElement pE = pGC.Next();
            while (pE != null)
            {
                if (pE is IMapFrame)
                {
                    // framgeo related to _PageLayout.Page pagesize, 8.5 x 11, inch
                    IEnvelope framgeo    = pE.Geometry.Envelope as IEnvelope;
                    float     defaultDPI = PdfGraphics.DefaultDpi;
                    double    x          = defaultDPI * framgeo.LowerLeft.X * pageUnitToInchUnitScale;
                    double    y          = defaultDPI * (layerOutPageSize.Height - framgeo.LowerLeft.Y) * pageUnitToInchUnitScale + 1;

                    bandwidth = (int)(defaultDPI * (framgeo.Width * pageUnitToInchUnitScale));

                    LastBottomLeftPoint.X = (int)x;
                    LastBottomLeftPoint.Y = (int)y;

                    chartControl1.Size = new System.Drawing.Size((int)(framgeo.Width * pageUnitToInchUnitScale * defaultDPI), (int)(ProfileMapHight * pageUnitToInchUnitScale * defaultDPI));

                    Image  img = null;
                    Bitmap bmp = null;
                    // Create an image of the chart.
                    ImageFormat format = ImageFormat.Png;
                    using (MemoryStream s = new MemoryStream())
                    {
                        chartControl1.ExportToImage(s, format);
                        img = Image.FromStream(s);
                        bmp = new Bitmap(img);
                        bmp.SetResolution(300, 300);
                    }

                    using (PdfDocumentProcessor processor = new PdfDocumentProcessor())
                    {
                        processor.LoadDocument(outFile);
                        PdfDocument  pd     = processor.Document;
                        PdfPage      page   = pd.Pages[0];
                        PdfRectangle pdfrec = page.MediaBox;
                        // RectangleF rf = new RectangleF(0, 0, Convert.ToSingle(pdfrec.Width) * 96 / 72, Convert.ToSingle(pdfrec.Height) * 96 / 72);
                        // Create and draw PDF graphics.
                        using (pGraphics = processor.CreateGraphics())
                        {
                            PdfGraphics graph = pGraphics;

                            Pen defaultPen = new Pen(Color.Black);
                            defaultPen.Width = 1;
                            graph.DrawImage(bmp, new RectangleF((float)x, (float)y, (float)framgeo.Width * pageUnitToInchUnitScale * defaultDPI, (float)ProfileMapHight * pageUnitToInchUnitScale * defaultDPI));

                            // draw map head.
                            RectangleF MapheadRect = new RectangleF((float)(int)(defaultDPI * framgeo.XMin * pageUnitToInchUnitScale - BandHeadWidth),
                                                                    (float)(int)(defaultDPI * (layerOutPageSize.Height - framgeo.UpperLeft.Y) * pageUnitToInchUnitScale),
                                                                    (float)(int)(BandHeadWidth),
                                                                    (float)(int)(defaultDPI * framgeo.Height * pageUnitToInchUnitScale));
                            graph.DrawRectangle(defaultPen, MapheadRect);
                            //draw head text
                            RectangleF      rF  = new RectangleF(0, 0, (float)MapheadRect.Height, (float)BandHeadWidth);
                            PdfStringFormat psf = new PdfStringFormat(PdfStringFormat.GenericDefault);
                            psf.Alignment     = PdfStringAlignment.Center;
                            psf.LineAlignment = PdfStringAlignment.Center;
                            graph.SaveGraphicsState();
                            // head box 的左下角
                            System.Drawing.Font textfont = new System.Drawing.Font("仿宋", 6F);
                            graph.TranslateTransform((float)(MapheadRect.Left), (float)(MapheadRect.Bottom));
                            graph.RotateTransform(270);
                            graph.DrawString("地图", textfont, new SolidBrush(Color.Black), rF, psf);
                            graph.RestoreGraphicsState();


                            // draw chart head
                            RectangleF ChartheadRect = new RectangleF((float)(int)(defaultDPI * framgeo.XMin * pageUnitToInchUnitScale - BandHeadWidth),
                                                                      (float)(int)(defaultDPI * (layerOutPageSize.Height - framgeo.LowerLeft.Y) * pageUnitToInchUnitScale + 1),
                                                                      (float)(int)(BandHeadWidth),
                                                                      (float)(int)(defaultDPI * ProfileMapHight * pageUnitToInchUnitScale));
                            graph.DrawRectangle(defaultPen, ChartheadRect);
                            //draw head text
                            rF = new RectangleF(0, 0, (float)ChartheadRect.Height, (float)BandHeadWidth);
                            graph.SaveGraphicsState();
                            // head box 的左下角
                            graph.TranslateTransform((float)(ChartheadRect.Left), (float)(ChartheadRect.Bottom));
                            graph.RotateTransform(270);
                            graph.DrawString("剖面图", textfont, new SolidBrush(Color.Black), rF, psf);
                            graph.RestoreGraphicsState();


                            LastBottomLeftPoint.Y = (int)ChartheadRect.Bottom;
                            //double beginM = -999; double endM = -999;
                            //GetIMUBeginEndMeasure(ref beginM, ref endM);
                            double beginM = BegMeasure;
                            double endM   = endMeasure;
                            for (int i = 0; i < listBoxDrawBandFields.Items.Count; i++)
                            {
                                string fieldname = listBoxDrawBandFields.Items[i].ToString();
                                band   b         = new band();
                                b.BandName    = fieldname;
                                b.pdfGC       = pGraphics;
                                b.BandWidth   = (int)bandwidth;
                                b.headFont    = labelbiaotou.Font;
                                b.ContentFont = labelNeirong.Font;
                                System.Drawing.Point pt = new System.Drawing.Point();
                                pt.X = LastBottomLeftPoint.X;
                                pt.Y = LastBottomLeftPoint.Y;
                                b.BandTopLeftLocation = pt;

                                b.BeginM = beginM;
                                b.EndM   = endM;
                                //b.bandData = new List<Tuple<double, string>>();
                                //for (int j = 0; j < 6; j++)
                                //{
                                //    double m = j * 500;
                                //    string txt = "异常2";
                                //    Tuple<double, string> t = new Tuple<double, string>(m,txt);
                                //    b.bandData.Add(t);
                                //}
                                b.bandData = GetPDFBandData(fieldname);
                                b.Draw();
                                LastBottomLeftPoint.Y += (int)b.BandHight;
                            }
                            // graph.DrawImage(img, rf);
                            graph.AddToPageForeground(page);
                            // Render a page with graphics.
                            //processor.RenderNewPage(PdfPaperSize.Letter, graph);
                            processor.SaveDocument(outFile);
                        }
                    }
                    break;
                }
                pE = pGC.Next();
            }
            #endregion
        }
Пример #32
0
        private void DisplayChart()
        {
            _sePrice.Points.Clear();
            _seVolume.Points.Clear();
            _seAvgPrice.Points.Clear();

            if (_timeSharingData == null || _timeSharingData.Rows.Count == 0)
            {
                return;
            }

            foreach (DataRow row in _timeSharingData.Rows)
            {
                //var tradeTime = Regex.Replace(row["TradeTime"].ToString().Trim(), "[:]", "");
                var tradeTime = row["TradeTime"].ToString().Trim();

                var closePrice = CommonHelper.StringToDouble(row["Close"].ToString().Trim());
                var avgPrice   = CommonHelper.StringToDouble(row["AvgPrice"].ToString().Trim());
                var volume     = CommonHelper.StringToDouble(row["Volume"].ToString().Trim());

                SeriesPoint spPrice = new SeriesPoint(tradeTime, closePrice);
                _sePrice.Points.Add(spPrice);
                SeriesPoint spVolume = new SeriesPoint(tradeTime, volume);
                _seVolume.Points.Add(spVolume);

                if (string.Compare(tradeTime, "09:30") >= 0)
                {
                    SeriesPoint spAvgPrice = new SeriesPoint(tradeTime, avgPrice);
                    _seAvgPrice.Points.Add(spAvgPrice);
                }
            }

            XYDiagram myDiagram = chartControl1.Diagram as XYDiagram;
            AxisX     myAxisX   = myDiagram.AxisX;

            AxisY  myAxisY   = myDiagram.AxisY;
            double minClose  = (double)_timeSharingData.AsEnumerable().Select(x => x.Field <decimal>("Close")).Min();
            double maxClose  = (double)_timeSharingData.AsEnumerable().Select(x => x.Field <decimal>("Close")).Max();
            double maxDiff   = Math.Abs(minClose - _preClose) > Math.Abs(maxClose - _preClose) ? Math.Abs(minClose - _preClose) : Math.Abs(maxClose - _preClose);
            double minValueY = _preClose - maxDiff;
            double maxValueY = _preClose + maxDiff;

            myAxisY.WholeRange.Auto = false;
            myAxisY.WholeRange.SetMinMaxValues(minValueY, maxValueY);
            myAxisY.LabelVisibilityMode = AxisLabelVisibilityMode.Default;

            SecondaryAxisY mySecondaryAxisY = myDiagram.SecondaryAxesY[0];
            double         minRate          = -maxDiff / _preClose;
            double         maxRate          = maxDiff / _preClose;

            mySecondaryAxisY.WholeRange.Auto = false;
            mySecondaryAxisY.WholeRange.SetMinMaxValues(minRate, maxRate);
            mySecondaryAxisY.LabelVisibilityMode = AxisLabelVisibilityMode.Default;

            myAxisY.CustomLabels.Clear();
            mySecondaryAxisY.CustomLabels.Clear();
            double priceInterval = Math.Round(maxDiff / 7, 2);

            for (int i = 0; i < 20; i++)
            {
                double price = _preClose + (10 - i) * priceInterval;
                myAxisY.CustomLabels.Add(new CustomAxisLabel(i.ToString(), price));
                myAxisY.CustomLabels[i].TextColor = Color.FromArgb(204, 51, 0);

                double rate = (10 - i) * priceInterval / _preClose;
                mySecondaryAxisY.CustomLabels.Add(new CustomAxisLabel(i.ToString(), rate));
                mySecondaryAxisY.CustomLabels[i].TextColor = Color.FromArgb(204, 51, 0);
            }
        }