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

WPF曲线自定义控件 - CurveHelper

CurveHelper 是一个轻量级、高性能的 WPF 自定义曲线图控件库,提供 CurveControl 控件,支持:

  • ✅ 自定义 X/Y 轴标题、范围、刻度
  • ✅ 手动设置 X 轴标签(如日期、字符串)
  • ✅ 多曲线绘制,支持颜色自定义
  • ✅ 数据动态绑定与更新
  • ✅ 控件大小自适应,支持拖拽缩放(可选)

使用,搜索 CurveHelper(推荐)

1 右击项目=》点击“管理Nuget程序包”。

dotnet add package CurveHelper

🚀 快速使用:在 WPF 项目中绘制曲线图

1 如何调用参考 创建wpf项目,在MainWindow.cs加入下面的代码

<Window x:Class="WpfApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="CurveHelper 示例" Height="600" Width="800"><Grid Name="mainGrid"><!-- CurveControl 将在此处动态添加 --></Grid>
</Window>

using System;
using System.Windows;
using System.Windows.Media;
using CurveHelper; // 确保引用命名空间namespace WpfApp
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();InitializeCurveControl();}private void InitializeCurveControl(){// 创建曲线控件实例CurveControl curveControl = new CurveControl{AxisConfig = new AxisConfig{XTitle = "日期",YTitle = "温度 (°C)",YMin = 0,YMax = 200,YInterval = 10,XLabelRotation = 45 // 旋转标签防止重叠}};// 生成 50 天的日期作为 X 轴标签string[] dateLabels = new string[50];for (int i = 0; i < 50; i++){dateLabels[i] = DateTime.Now.AddDays(i).ToString("yyyy-MM-dd");}curveControl.AxisConfig.XLabels.AddRange(dateLabels);// 创建一条红色曲线var tempCurve = new CurveData{Color = Brushes.Red,Name = "温度曲线" // 可选:曲线名称};// 生成 Y 值(示例:恒定 120)double[] yValues = new double[50];for (int i = 0; i < 50; i++){yValues[i] = 120;}tempCurve.YValues.AddRange(yValues);// 添加曲线到控件curveControl.AddCurve(tempCurve);// 将控件添加到界面mainGrid.Children.Add(curveControl);}}
}

📸 效果展示

🎨 功能特性

特性说明
AxisConfig配置坐标轴标题、范围、刻度、标签旋转等
XLabels支持字符串数组作为 X 轴标签(如时间、类别)
CurveData每条曲线可独立设置颜色、名称、数据
AddCurve()支持添加多条曲线
拖拽/缩放可通过扩展支持鼠标拖拽平移、滚轮缩放(需自行实现)
性能优化适用于中等规模数据(1000点以内)实时绘制
http://www.xdnf.cn/news/19539.html

相关文章:

  • Java-Spring入门指南(二)利用IDEA手把手教你如何创建第一个Spring系统
  • ChatDOC工具测评:AI驱动PDF/Word文档处理,支持敏感内容隐私保护与表格提取分析
  • Memento:基于记忆无需微调即可让大语言模型智能体持续学习的框架
  • keycloak中对接oidc协议时设置prompt=login
  • lesson52:CSS进阶指南:雪碧图与边框技术的创新应用
  • 公司电脑监控软件应该怎么选择?五款超实用的公司电脑监控软件推荐
  • 高性能多线程 PHP 图像处理库 PHP-VIPS:颠覆你对图像处理的认知
  • 从零开始学习C#上位机开发学习进阶路线,窥探工业自动化和物联网应用
  • 硬件开发1-51单片机1
  • Windows 电脑发现老是自动访问外网的域名排障步骤
  • 渗透测试-FastJson漏洞原理与复现
  • 【51单片机】【protues仿真】基于51单片机脉搏体温检测仪系统
  • 2024 年 AI 技术全景图:大模型轻量化、多模态融合如何重塑产业边界?
  • 数据库索引失效的原因+示例
  • (线上问题排查)3.线上API接口响应慢?一套高效排查与定位问题的心法
  • OpenCV-Python Tutorial : A Candy from Official Main Page(五)
  • Roo Code自定义Mode(模式)
  • 基于单片机智能家居环境监测报警系统Proteus仿真(含全部资料)
  • Cesium 加载桥梁3DTiles数据时,出现部分区域发暗、部分正常的现象
  • openEuler2403编译安装Nginx
  • 【期末复习】--软件工程
  • 苍穹外卖项目实战(日记十三)-记录实战教程及问题的解决方法-(day3-5) 修改菜品功能实现
  • C++ Bellman-Ford算法
  • 「数据获取」《中国住户调查年鉴》(2000-2024)(获取方式看绑定的资源)
  • # [特殊字符] 构建现代化黄金价格实时仪表盘:技术解析与实践
  • AI产品经理面试宝典第81天:RAG系统架构演进与面试核心要点解析
  • C++11新特性解析与应用
  • GPU 通用手册:裸机、Docker、K8s 环境实战宝典
  • Jetson AGX Orin平台R36.3.0版本1080P25fps MIPI相机图像采集异常调试记录
  • 在idea当中git的基础使用