Dev中ChartControl——属性熟悉与简单应用

article/2025/11/5 18:11:07

图表元素之间的关系:

根据DevExpress帮助文档中描述:

创建点图:

1、创建图表

/// <summary>
/// 创建图表
/// </summary>
private void CreatChart()
{// Create a new chart.图表控件ChartControl pointChart = new ChartControl();// Add the chart to the form.pointChart.Dock = DockStyle.Fill;//停靠方式this.Controls.Add(pointChart);//pointChart.RightToLeft = System.Windows.Forms.RightToLeft.Inherit;  //指示文本是否从右至左显示//添加 图表标题pointChart.Titles.Add(new ChartTitle());pointChart.Titles[0].Text = "A Point Chart";//Legend  调整图例pointChart.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.RightOutside; //获取或设置图表控件中的图例的水平对齐方式。pointChart.Legend.AlignmentVertical = LegendAlignmentVertical.Top;//获取或设置图表控件中的图例的竖直对齐方式。pointChart.Legend.Direction = LegendDirection.BottomToTop;//获取或设置在该图例中显示系列名称的方向。pointChart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;//是否在图表上显示图例Series series1 = CreateSeries("Series 1");//创建系列Series series2 = CreateSeries("Series 2");pointChart.Series.Add(series1);// Add the series to the chart.将点系列加入图表控件pointChart.Series.AddRange(new Series[] { series2 });//Diagram 对象等于 null (在 Visual Basic 中为 Nothing),直到图表至少拥有一个系列。SetDiagarm(pointChart);//设置图像CreateAxisY(series2, pointChart);// Add points to it.series1.Points.Add(new SeriesPoint(1, 10));series1.Points.Add(new SeriesPoint(2, 22));series1.Points.Add(new SeriesPoint(3, 14));series1.Points.Add(new SeriesPoint(4, 27));series1.Points.Add(new SeriesPoint(5, 15));series1.Points.Add(new SeriesPoint(6, 28));series1.Points.Add(new SeriesPoint(7, 15));SeriesPoint spoint = new SeriesPoint(8, 33);spoint.Color = Color.Red;//定制点的颜色series1.Points.Add(spoint);//系列2采用DataTable绑定// Create an empty table.DataTable table = new DataTable("Table1");// Add two columns to the table.table.Columns.Add("Argument", typeof(Int32));table.Columns.Add("Value", typeof(Int32));// Add data rows to the table.Random rnd = new Random();DataRow row = null;for (int i = 0; i < 10; i++){row = table.NewRow();row["Argument"] = i;row["Value"] = rnd.Next(30);table.Rows.Add(row);}// Specify data members to bind the series.series2.ArgumentScaleType = ScaleType.Numerical;series2.ArgumentDataMember = "Argument";//设置参数数据字段的名称series2.ValueScaleType = ScaleType.Numerical;series2.ValueDataMembers.AddRange(new string[] { "Value" });series2.DataSource = table;
}

2、创建系列

/// <summary>
/// 创建系列
/// </summary>
/// <param name="Caption">图形标题</param>
/// <returns></returns>
private Series CreateSeries(string Caption)
{// Create a point series.创建一个点系列Series series1 = new Series(Caption, ViewType.Point);series1.CrosshairEnabled = DevExpress.Utils.DefaultBoolean.Default; //获取或设置一个值,该值指定此系列是否启用十字准线游标。series1.CrosshairLabelVisibility = DevExpress.Utils.DefaultBoolean.True;//指定是否在特定的2D DEVExt.xCARTARTSs系列的图表上显示十字准线标签。series1.CrosshairLabelPattern = "坐标:({A},{V})";//获取或设置一个字符串表示指定要在当前系列的瞄准线标签中显示的文本的模式series1.CrosshairHighlightPoints = DevExpress.Utils.DefaultBoolean.Default;//获取或设置一个值,该值指定当十字准线光标悬停时,系列点是否突出显示。// Set the numerical argument scale type for the series,as it is qualitative, by default.series1.ArgumentScaleType = ScaleType.Numerical;   //指定系列的参数刻度类型。默认为(ScaleType.Auto)series1.ValueScaleType = ScaleType.Numerical;  //指定系列的取值刻度类型series1.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;  //是否显示系列点标签series1.LegendText = Caption;//设置标志系列的图例文本//调整 系列点标签PointSeriesLabel myLable1 = (PointSeriesLabel)series1.Label;myLable1.Angle = 0;//获取或设置控制数据点标签位置的角度myLable1.TextPattern = "坐标:({A},{V})";//获取或设置一个字符串,该字符串表示指定要在系列标注标签中显示的文本的模式。myLable1.Position = PointLabelPosition.Outside;//获取或设置点标记所在的位置。myLable1.ResolveOverlappingMode=ResolveOverlappingMode.Default;//启用系列标签的自动冲突检测和解决// 点系列视图属性设置PointSeriesView myView1 = (PointSeriesView)series1.View;//转换系列的视图类型为点类型myView1.PointMarkerOptions.Kind = MarkerKind.Star;//标记的形状myView1.PointMarkerOptions.StarPointCount = 5;//设置星形标记具有的点数myView1.PointMarkerOptions.Size = 8;//标记大小//在不同的窗格中显示系列//myView1.Pane—— 在 属性 窗口中展开 XYDiagramSeriesViewBase.Pane 属性的下拉菜单,并单击 New pane(新建窗格) 菜单项。return series1;
}

3、图像设置

/// <summary>
/// 图像设置
/// </summary>
/// <param name="pointChart">图表控件</param>
private void SetDiagarm(ChartControl pointChart)
{// Access the diagram's properties.把 Diagram 对象转换为所需的图象类型XYDiagram diagram = (XYDiagram)pointChart.Diagram;diagram.Rotated = false;//图像是否旋转diagram.EnableAxisXScrolling = true;//X轴是否允许滚动diagram.EnableAxisXZooming = true;//X轴是否允许缩放diagram.PaneLayoutDirection = PaneLayoutDirection.Horizontal;//窗格的对齐方式// Customize the appearance of the X-axis title.调整 X-轴AxisX xAxis = diagram.AxisX;//获取X轴xAxis.Alignment = AxisAlignment.Near;//指定轴相对于另一主轴的位置。属性 AxisAlignment.Zero 设置仅对主轴可用xAxis.Title.Text = "X轴";//设置轴标题xAxis.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; //是否显示轴标题xAxis.Label.TextPattern = "";//防止过长的轴标签产生重叠xAxis.Label.Angle = -45;//设置轴标签文本旋转的角度xAxis.Label.EnableAntialiasing = DevExpress.Utils.DefaultBoolean.Default;//获取或设置是否对轴标签的文本应用反走样(平滑)xAxis.Label.Staggered = true;//轴标签是否是交错排列的//轴取值的范围是自动确定的(当启用了  xAxis.WholeRange.Auto 属性时),也可以人工指定两个轴取值来限定轴的范围//xAxis.WholeRange.Auto = false;//xAxis.WholeRange.MaxValue = 70;//xAxis.WholeRange.MinValue = -70;//通过 AxisBase.Logarithmic 和 AxisBase.LogarithmicBase 属性,以对数来呈现轴的取值。//xAxis.Logarithmic = true;//xAxis.LogarithmicBase = 10;// Create a constant line. 设置常数线ConstantLine constantLine1 = new ConstantLine("Constant Line 1");xAxis.ConstantLines.Add(constantLine1);// Create a strip with its maximum and minimum axis value defined.数值带xAxis.Strips.Add(new Strip("Strip 1", 5, 15));// Enable automatic scale breaks creation, and define their maximum number.启用自动刻度分隔线diagram.AxisY.AutoScaleBreaks.Enabled = true;diagram.AxisY.AutoScaleBreaks.MaxCount = 5;// Add scale breaks to the Y-axis collection, with their Edge1 and Edge2 properties defined in the constructor.人工把刻度分隔线插入到轴中diagram.AxisY.ScaleBreaks.Add(new ScaleBreak("Scale Break 1", 10, 100));diagram.AxisY.ScaleBreaks.Add(new ScaleBreak("Scale Break 2", 110, 2000));// Customize the appearance of the axes' grid lines.网格显示和设置diagram.AxisY.GridLines.Visible = true;diagram.AxisY.GridLines.MinorVisible = true;// Customize the appearance of the axes' tickmarks.刻度线显示和设置diagram.AxisY.Tickmarks.Visible = false;diagram.AxisY.Tickmarks.MinorVisible = false;//定制窗格的滚动条的外观ScrollBarOptions scrollBarOptions = diagram.DefaultPane.ScrollBarOptions;scrollBarOptions.BackColor = Color.White;scrollBarOptions.BarColor = Color.Blue;scrollBarOptions.BorderColor = Color.Navy;scrollBarOptions.BarThickness = 15;scrollBarOptions.XAxisScrollBarAlignment = ScrollBarAlignment.Far;scrollBarOptions.XAxisScrollBarVisible = true;// Obtain a diagram and clear its collection of panes.diagram.Panes.Clear();// Create a pane for each series.for (int i = 1; i < pointChart.Series.Count; i++){XYDiagramPane pane = new XYDiagramPane("The Pane's Name");diagram.Panes.Add(pane);XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)pointChart.Series[i].View;view.Pane = pane;}AxisY myAxis = ((XYDiagram)pointChart.Diagram).AxisY;
}

4、创建辅助轴

/// <summary>
/// 创建图表的第二坐标系
/// </summary>
/// <param name="series">Series对象</param>
/// <returns></returns>
private SecondaryAxisY CreateAxisY(Series series, ChartControl chartControl)
{// Create secondary axes, and add them to the chart's Diagram.SecondaryAxisY myAxis = new SecondaryAxisY(series.Name);((XYDiagram)chartControl.Diagram).SecondaryAxesY.Add(myAxis);// Assign the series2 to the created axes.((PointSeriesView)series.View).AxisY = myAxis;//为当前系列指定Y轴myAxis.Title.Text = "A Secondary Y-Axis";myAxis.Title.Alignment = StringAlignment.Far; //顶部对齐myAxis.Title.Visibility = DevExpress.Utils.DefaultBoolean.True;myAxis.Title.Font = new Font("宋体", 9.0f);series.View.Color = Color.Green;Color color = series.View.Color;//设置坐标的颜色和图表线条颜色一致myAxis.Title.TextColor = color;myAxis.Label.TextColor = color;myAxis.Color = color;return myAxis;
}


http://chatgpt.dhexx.cn/article/roVs2kfC.shtml

相关文章

运用getParameterNames()方法和getParameterValues()方法获取请求参数名称和内容

一.例子代码&#xff1a; 填写信息页面&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Insert title here</title> </head> <body> <form action"request_demo04.jsp" m…

使用 String[] values = request.getParameterValues(key);出现的问题 ,Ajax Post 提交数组参数后台无法接收

ajax向服务器提交数组参数多了一个中括号 String[] values request.getParameterValues(key); $.post({}) 直接传递数组会导致如下情况 // 使用一下js会导致如图这种情况var ids [];$(input[name"ids"]:checked).each(function(){ids.push($(this).val());})$.po…

springboot 防止xss 和sql 注入 改写 http 请求 getParameter,getParameterValues,getHeader等方法 有点东西

目录 1.springboot 启动类 引入 过滤器配置 2.过滤器 3.XssAndSqlHttpServletRequestWrapper包装器 包装类 4.修改验证登录代码 这里只写了基础的 了解意思即可 5.测试内容 6.测试结果 7.反黑客小介绍&#xff08;黑客大哥们好小弟这没啥大用O(∩_∩)O~&#xff0c;但…

java web中request.getParameterValues()和request.getParameter()异同

JavaWeb中获取表单的多行值采用request.getParameterValues(&#xff09;方法&#xff0c;request.getParameter()方法获取单个值 <!DOCTYPE html> <html lang"zh_CN"> <head><meta charset"UTF-8"><title>Title</title…

Jsp中getParameter、getParameterValues、getParameterNames和getParameterMap用法详解

以下是一个简单的jsp注册页面&#xff0c;从前端提交的数据 <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <% String path request.getContextPath(); String basePath request.getScheme()"://"re…

req.getParameterValues 输出前端乱码

前端页面 <% page contentType"text/html;charsetUTF-8" language"java" %> <html> <head><title>登录</title> </head> <body> <% page pageEncoding"UTF-8" %> <div style"text-ali…

jsp内置对象request——getParameterValues的使用

文章目录 前言一、getParameterValues是什么二、使用步骤 1.通过表单传入2.使用数组存取读入表单结果总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、getParameterValues是什么 当控件中有多个选项时&#xff0c;要取到所有值可调用该方法&am…

initWithFormat 和stringWithFormat的区别

差别&#xff1a; 1、initWithFormat是实例办法 只能经由过程 NSString* str [[NSString alloc] initWithFormat:&#xff20;"&#xff05;&#xff20;"&#xff0c;&#xff20;"Hello World"] 调用&#xff0c;然则必须手动release来开释内存资料 2、…

C# string Format

使用C#格式化字符串 转载自博客园&#xff0c;原文连接&#xff1a;https://www.cnblogs.com/FlyingBread/archive/2007/01/18/620287.html&#xff0c;向原文作者献上敬意 1 前言 如果你熟悉Microsoft Foundation Classes&#xff08;MFC&#xff09;的CString&#xff0c;…

NSString函数stringWithFormat与stringWithString的比较

我们经常会初始化一些string使用NSString的stringWithString函数 但使用时发现了一个stringWithString的问题&#xff0c;如图 当参数是nil时&#xff0c;stringWithString会crash&#xff0c;所以使用时必须验证参数不是nil 相比较stringWithFormat就不会crash但返回的str也…

stringWithFormat:用法及注意事项

在ObjectiveC中NSString中有一个 stringWithFormat&#xff1a;方法 常见的输出方式&#xff1a; NSString *height; height [NSString stringWithFormat:"Your height is %d feet, %d inches.",5,11]; NSLog("%",height); 输出结果&#xff1a; 2013-04-…

虚拟机VirtualBox下载与安装、安装Ubuntu超详细图文步骤,对一些配置问题也有所写。

对于机器学习和深度学习来说&#xff0c;Linux系统是必不可少的。而我们在只是学习当中一般不会去重装一个Linux系统&#xff0c;而是去使用虚拟机来使用Linux系统。在VMware与VirtualBox这两款虚拟机的体验上&#xff0c;个人更偏向于后者&#xff0c;因为它所占内存更小&…

安装Windowsxp虚拟机

1.打开VMware&#xff0c;选择创建新的虚拟机&#xff0c;微软windows系统选择典型&#xff0c;而linux系统选择自定义&#xff1a; 2.选择稍后安装操作系统&#xff1a; 3.下一步选择相应合适的版本&#xff0c;选择存放位置&#xff1a; 4.选择合适大小的硬盘给虚拟机&…

在虚拟机VMware上安装XP系统

由于最近在学习uc/os-ii操作系统需要用到Borland C 3.1版本的软件&#xff0c;但是由于本人笔记本电脑的系统为Windows7 64位操作系统&#xff0c;与BC3.1不兼容&#xff0c;又不想直接换成XP系统&#xff0c;所以想在虚拟机VMware上安装XP&#xff0c;刚开始在网上搜了很多教程…

VirtualBox安装

1、VirtualBox安装 运行安装程序&#xff0c;一直下一步即可。如果不想安装到C盘&#xff0c;可以自己选盘符。 注意&#xff1a;软件开发安装所有程序时&#xff0c;不要安装到有中文或特殊符号的路径下。 2、安装操作系统 点击新建&#xff0c;弹出如下对话框 名称&…

VirtualBox虚拟机安装

一、宿主机(物理机)要求 宿主机建议内存大于4G&#xff0c;cpu至少4个 二、下载virtualBox https://www.virtualbox.org/wiki/Downloads 下载的安装包&#xff0c;默认安装即可(也可指定目录安装) 三、下载系统镜像 可以参考另外一篇各种ISO镜像 四、VirtualBox安装虚拟…

使用VirtualBox安装Ubuntu系统

一、下载VirtualBox软件安装包和Ubuntu系统镜像 1.1 下载VirtualBox安装包 点我进入VirtualBox官网下载安装包。 1.2 下载ubuntu20.04系统镜像 我使用的是国内清华大学的镜像&#xff0c;点我进行镜像选择和下载&#xff0c;这里我选择的是64位的系统镜像。 二、安装Vi…

如何在vmware workstation 上安装xp系统

准备&#xff1a;系统ISO镜像&#xff0c;可去MSDN下载。**Vmware workstation软件** 安装过程&#xff1a; 1&#xff0c;打开vmware软件&#xff0c;点击“创建新的虚拟机” 2&#xff0c;在窗口中选择典型&#xff0c;然后下一步。 3&#xff0c;选择“稍后安装操作系统”…

超级详细的 VirtualBox 虚拟机安装 及入门教程

一、前言 虚拟机&#xff08;Virtual Machine&#xff09;指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。 虚拟机是在一些开发测试工作中常常需要用到的功能&#xff0c;常见的虚拟机…

virtualbox安装详解

环境 系统&#xff1a;win7 内存&#xff1a;8GB 软件版本 VBox版本&#xff1a;安装的最新版本 [VirtualBox-5.2.12-122591-Win.exe] 运行VirtualBox的安装程序 执行步骤如下&#xff1a; 1、进入安装向导&#xff0c;点击”下一步“ 2、进入自定安装&#xff0c;软…