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

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.dtcms.com/a/362596.html

相关文章:

  • 大模型是如何“学会”思考的?——从预训练到推理的全过程揭秘
  • 【完整源码+数据集+部署教程】PHC桩实例分割系统源码和数据集:改进yolo11-Faster-EMA
  • 无需服务器,免费、快捷的一键部署前端 vue React代码--PinMe
  • 搭建分布式Hadoop集群[2025] 实战笔记
  • 【golang长途旅行第36站】golang操作Redis
  • 【自记】Python 中 简化装饰器使用的便捷写法语法糖(Syntactic Sugar)示例
  • ARM汇编记忆
  • 【53页PPT】华为制造行业数字化转型工业互联网智能制造解决方案(附下载方式)
  • MySQL事务+MVCC(精简版,包教包废)
  • 2025华为最值得入的耳机,真的赢麻了!
  • 结构抗震与土木工程研究
  • SylixOS 下的信号系统
  • Vue 3 + TypeScript 现代前端开发最佳实践(2025版指南)
  • Chrome浏览器调用ActiveX控件之allWebOffice在线编辑控件
  • JD潜在前端二面高频题解析
  • mysql5.6+分页时使用 limit+order by 会出现数据重复问题
  • 蓝桥杯算法之基础知识(5)
  • 基于Spark的新冠肺炎疫情实时监控系统_django+spider
  • 数据结构与算法个人学习代码笔记包含leetcode,海贼oj,蓝桥杯,ACM
  • 华为Fit4:腕间助手,守护你的健康,带你开启智慧生活
  • 【字节拥抱开源】 UXO 团队开源 USO: 通过解耦与奖励学习实现的统一风格与主题驱动生成
  • 2025最新“Java 面试八股文 + 各大厂的面试真题”限时开源
  • 美团 LongCat 开源大模型60 亿参数 MoE 架构,赋能开发者加速 AI 应用落地
  • 本地搭建并使用 Redmine 详细教程
  • CICD 持续集成与持续交付
  • SGLang推理引擎--高效的开源部署方案
  • 【第四章:大模型(LLM)】09.最强开源大模型:Llama3 原理介绍与实现-(6)Llama2 Llama3代码实现
  • Wifi开发上层学习1:实现一个wifi搜索以及打开的app
  • 零依赖每月工作计划备忘录:高效管理你的每一天
  • Qt 创建的C++ 桌面程序 学习笔记1