当前位置: 首页 > news >正文

C# 怎么做chat柱状图能实现不同的颜色,还带游标

1:最近做一个项目,需要用到chat图表应用,需要显示柱状图,但是每一个柱状图需要不同的颜色,还要显示多个游标

2:网上找了半天,没有类似的,自己动手做一个~

3:上效果图:

是不是还可以,下面完整的解析下代码:

(1):直接动态生成

//定义chat对象以及游标private Chart chart;private VerticalLineAnnotation cursor1;private VerticalLineAnnotation cursor2;private TextAnnotation diffAnnotation;private Random random = new Random(); //动态生成chat控件chart = new Chart();chart.Dock = DockStyle.Fill;chart.BackColor = Color.White;chart.BorderlineColor = Color.Gray;chart.BorderlineDashStyle = ChartDashStyle.Solid;chart.BorderlineWidth = 1;

(2):添加图表区域:图表的数据都是在这里添加进去的

    // 添加图表区域ChartArea chartArea = new ChartArea("MainArea");chartArea.BackColor = Color.WhiteSmoke;chartArea.AxisX.Title = "类别";chartArea.AxisY.Title = "数值";chartArea.AxisX.MajorGrid.LineColor = Color.LightGray;chartArea.AxisY.MajorGrid.LineColor = Color.LightGray;chart.ChartAreas.Add(chartArea);

(3):  添加柱状图系列,这里就生成数据,然后 绑定

  // 添加柱状图系列Series barSeries = new Series("柱状图数据");barSeries.ChartType = SeriesChartType.Column;barSeries.BorderWidth = 1;barSeries.BorderColor = Color.Black;// 添加10个随机数据的柱子,每个柱子不同颜色string[] categories = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" };for (int i = 0; i < 10; i++){int value = random.Next(20, 100);DataPoint point = new DataPoint(i, value);point.Color = GetRandomColor();point.Label = value.ToString();point.Font = new Font("Arial", 8, FontStyle.Bold);point.LabelForeColor = Color.Black;barSeries.Points.Add(point);}chart.Series.Add(barSeries);

(4):设置轴标签

 // 设置X轴标签 
chartArea.AxisX.Interval = 1;chartArea.AxisX.LabelStyle.Angle = -45;for (int i = 0; i < categories.Length; i++){barSeries.Points[i].AxisLabel = categories[i];}

(5):设置游标,这里设置了两个

            // 创建第一个游标(红色)cursor1 = new VerticalLineAnnotation{Name = "Cursor1",AxisX = chartArea.AxisX,X = 3, // 初始位置在第4个柱子(D)中间IsInfinitive = true,LineColor = Color.Red,LineWidth = 2,ClipToChartArea = chartArea.Name,AllowMoving = true,IsSizeAlwaysRelative = false,AnchorY = chartArea.AxisY.Maximum // 确保游标从顶部开始};chart.Annotations.Add(cursor1);// 创建第二个游标(蓝色)cursor2 = new VerticalLineAnnotation{Name = "Cursor2",AxisX = chartArea.AxisX,X = 7, // 初始位置在第8个柱子(H)中间IsInfinitive = true,LineColor = Color.Blue,LineWidth = 2,ClipToChartArea = chartArea.Name,AllowMoving = true,IsSizeAlwaysRelative = false,AnchorY = chartArea.AxisY.Maximum // 确保游标从顶部开始};chart.Annotations.Add(cursor2);

(6):最终将控件加载到窗体显示

   // 将图表添加到窗体this.Controls.Add(chart);

*有一个生成随机颜色的中间函数

        private Color GetRandomColor(){return Color.FromArgb(random.Next(50, 200), random.Next(50, 200), random.Next(50, 200));}

相关文章:

  • 破解C/C++内存分配与管理:内存对象模型硬核剖析
  • 历年贵州大学保研上机真题
  • 【 java 基础问题 第一篇 】
  • 使用 Python 库中自带的数据集来实现上述 50 个数据分析和数据可视化程序的示例代码
  • 云原生安全之网络IP协议:从基础到实践指南
  • Maven与Spring核心技术解析:构建管理、依赖注入与应用实践
  • 25. 自动化测试框架开发之日志装饰器的开发
  • Ollama-OCR:基于Ollama多模态大模型的端到端文档解析和处理
  • 打卡35天
  • 【卫星通信】通信卫星链路预算计算及其在3GPP NTN中的应用
  • 大模型智能体入门扫盲——基于camel的概述
  • 在kali中搞个jdk1.8.,又不破坏环境
  • 第十四章:数据治理之数据源:数据源的数据接入、业务属性梳理及监控
  • SpringBoot项目配置文件、yml配置文件
  • 二叉树层序遍历6
  • 25Yunxi期中
  • Java 并发编程高级技巧:CyclicBarrier、CountDownLatch 和 Semaphore 的高级应用
  • C语言-枚举
  • 【打卡】树状数组的操作
  • Linux系统移植①:uboot概念
  • 自己做行程的网站/东莞新闻最新消息今天
  • 河南手机网站建设公司/人工智能培训课程
  • 沈阳做平板网站/今天新闻头条新闻
  • 做趣味图形的网站/活动营销案例100例
  • 日本的网页建设网站/seo全称英文怎么说
  • 17我们一起做网站/5118大数据平台官网