当前位置: 首页 > 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));}

http://www.xdnf.cn/news/641449.html

相关文章:

  • 篇章二 基础——包装类
  • ADS学习笔记(二) 交流小信号仿真
  • Windows逆向工程提升之x86结构化异常SEH处理机制
  • Java 可扩展状态系统设计:备忘录模式的工程化实践与架构演进
  • TCP建立连接为什么不是两次握手,而是三次,为什么不能在第二次握手时就建立连接?
  • 基于AI自动生成测试用例
  • 有限时间 vs 固定时间 vs 预定时间滑模:稳定性分析与仿真验证方法对比(中)
  • 8.Java 8 日期时间处理:从 Date 的崩溃到 LocalDate 的优雅自救​
  • 【黑马点评】redis实战
  • Seaborn库的定义与核心功能
  • 【linux】mount命令中,data=writeback参数详细介绍
  • ubuntu 22.04安装和使用docker介绍
  • Java面向对象 二
  • GitHub Copilot 现已支持 AI Coding Agent
  • MySQL:12_视图
  • 08_模型训练篇-Torchvision(下):其他有趣的功能
  • 文件操作(C语言版)
  • 12.LCD、FSMC和ILI9341芯片
  • python中pandas之dataframe知识
  • 文本存入向量数据库流程
  • Python海龟绘图(turtle模块)常考知识点总结
  • 【数据结构】线性表之“双链表(带头循环双向链表)”
  • java 加密算法的简单使用
  • Linux系统中实时查看日志
  • Unity3D仿星露谷物语开发50之初始化农作物
  • day27:零基础学嵌入式之进程
  • Docker镜像存储路径迁移指南(解决磁盘空间不足问题)
  • Nginx安全防护
  • 基于Python Anaconda环境,使用CNN-LSTM模型预测碳交易价格的完整技术方案
  • 大模型与训练与微调