C# WPF上位机开发(图形显示软件)

news2024/9/24 1:25:27

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        在实际应用中,有一种情况就是,我们需要经常对数据进行图形化显示,这样会比较直观一点。比如经济统计里面的同比、环比显示,pid里面的调参结果显示,传感器数据的实时显示等等,这些内容都是软件开发中很重要的环节。而对c# wpf而言,因为自身有很多开源库的加持,本身用data chart显示特别简单和容易,大家可以好好掌握一下。

        本次使用地开源库是OxyPlot库,其他的库也比较类似,大家可以选择自己熟悉的开发库进行学习和使用。

1、安装OxyPlot库

        安装OxyPlot库的方法比较简单,直接打开NuGet程序包,选择下载OxPlot.Core即可。下载完毕之后,我们就会在引用节点下面查看到OxyPlot、OxyPlot.Wpf、OxyPlot.Wpf.Shared这三个库。

2、MainWindow类不做修改

        关于数据的内容部分,这里借用了MVVM的思想,本身不需要对MainWindow类做任何的修改。这部分就可以直接忽略过去了。

3、设计界面

        界面部分的设计,最最重要的就是创建一个PlotView区域,并且将这个区域和MyModel做一个绑定。

<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:oxy="http://oxyplot.org/wpf"
        xmlns:local="clr-namespace:WpfApp"
        Title="ChartDemo" Height="400" Width="500">
    <Window.DataContext>
        <local:PlotViewModel/>
    </Window.DataContext>
    <Grid>
        <oxy:PlotView Model="{Binding MyModel}"/>
    </Grid>
</Window>

4、创建PlotViewModel.cs文件

        细心的同学可能发现,在xaml文件中也出现了PlotViewModel的身影,这就是它将来需要bind的class。在PlotViewModel当中会有一个PlotModel的变量,就是MyModel。我们在PlotView上面生成的任何图像都是用MyModel来生成的。

        当然,这里的内容不太多,目前为止我们显示的内容还只是一个正弦曲线和一个余弦曲线。因为它本身也是作为一个抛砖引玉的目的存在的。大家如果后续需要掌握更多的显示方法,可以参考OxyPlot的官网,寻找更多的demo code。

using System;
using OxyPlot;
using OxyPlot.Axes;
using OxyPlot.Series;

namespace WpfApp
{
    public class PlotViewModel
    {
        public PlotModel MyModel { get; private set; }

        public PlotViewModel()
        {
            this.MyModel = new PlotModel { Title = "Sin/Cos Graph" };

            MyModel.Series.Add(new FunctionSeries(Math.Cos, -10, 10, 0.1, "cos(x)"));
            MyModel.Series.Add(new FunctionSeries(Math.Sin, -10, 10, 0.1, "sin(x)"));
        }
    }
}

5、显示和测试

        所有一切都准备好了之后,就可以开始显示了。编译无误之后,直接单击启动。不出意外的话,我们应该可以看到如下所示的画面,这基本代表我们已经可以把OxyPlot正常用起来了。当然大家如果本身不喜欢使用库,用canvas直接画图的话,这也是可以的。只要是效果做出来,达到自己的设计目的和使用要求就可以了,不必拘泥于形式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1285422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java每日一记 —— BeanFactory 与 ApplicationContext 的区别

BeanFactory 与 ApplicationContext 1.容器与 bean1.BeanFactory 接口2.ApplicationContext 接口 2.测试几个小案例 此篇代码在jdk11上正常运行&#xff0c;springBoot版本为2.7.14 1.容器与 bean 1.BeanFactory 接口 1.先看下源码&#xff1a; 2.从源码中的接口中可以得出…

Netty01-NIO与BIO

NIO 什么是NIO Java NIO 全称 java non-blocking IO&#xff0c;是指JDK 1.4 及以上版本提供的新API&#xff08;New IO&#xff09;。从 JDK1.4 开始&#xff0c;Java 提供了一系列改进的输入/输出的新特性&#xff0c;为所有的原始类型&#xff08;boolean类型除外&#xf…

亲测体验Go语言PGO

本文是对官方 Profile-guided optimization in Go 1.21[1] 的学习与实践. 对于PGO的思路,之前就有过类似的想法,有些许差异. 但本质都是通过对以往运行情况的"学习",优化以后程序的运行(有点以史为鉴和鉴于往事,资于治道的感觉) 过程很简单: 收集程序运行过程中的数据…

zabbix的自动发现机制:

zabbix的自动发现机制: zabbix客户端主动的和服务端联系&#xff0c;将自己的地址和端口发送给服务端&#xff0c;实现自动添加监控主机 客户端是主动的一方 缺点&#xff1b;如果自定义网段中主机数量太多&#xff0c;等级耗时会很久&#xff0c;而且这个自动发现机制不是很…

银河麒麟服务器部署Prometheus+Grafana

#年薪百万# 一、环境准备 操作系统&#xff1a;Operating System: Kylin Linux Advanced Server V10 (Sword) (X86-64) prometheus&#xff1a;prometheus-2.48.0.linux-amd64 grafana&#xff1a;grafana-enterprise-10.2.2.linux-amd64 node_exporter&#xff1a;node_expor…

个体诊所电子处方系统哪个好用,推荐一款可以自由设置配方模板能够填写病历可以查询历史病历的门诊处方笺软件

一、前言 1、功能实用&#xff0c;操作简单&#xff0c;不会电脑也会操作&#xff0c;软件免安装&#xff0c;已内置数据库。 2、中医西医均可用此软件开电子处方&#xff0c;支持病历记录查询&#xff0c;药品进出库管理&#xff0c;支持配方模板一键导入电子处方。 二、电子…

Anaconda创建虚拟环境以及Pycharm和Jupyter如何切换虚拟环境

文章目录 Anaconda创建管理虚拟环境0. 进入到终端1. 创建新环境2. 切换环境3. 删除环境4. 查询当前已有的环境 Pycharm切换虚拟环境0. 更换解析器1. 添加虚拟环境&#xff08;之前默认的是base环境&#xff09;2. 验证切换虚拟环境 Jupyter Notebook 切换虚拟环境1. 安装ipyker…

FPGA串口接收解帧、并逐帧发送有效数据——1

FPGA串口接收解帧、并逐帧发送有效数据 工程实现的功能&#xff1a;FPGA串口接收到串口调试助手发来的数据&#xff0c;将其数据解帧。判断到正确的帧头和帧尾之后&#xff0c;将有效数据存入rx_data中&#xff1b;另一方面发送端将有效数据逐帧发送出去。 参考&#xff1a;正…

嵌入式门槛高吗?

今日话题&#xff0c;嵌入式门槛高吗&#xff1f;在嵌入式领域&#xff0c;门槛因公司和职位的不同而异。普通的嵌入式岗位门槛相对较低&#xff0c;通常要求掌握一些C语言编程和单片机相关知识&#xff0c;可以制作简单的电子产品&#xff0c;但相应的工资较低。然而&#xff…

HNU-电路与电子学-未知年份(不含解析)

【写在前面】 电路与电子学好像是从2020级开设的课程&#xff0c;故实际上目前只有2020与2021两个年级考过期末考试。 这门课程主要由所谓的“数电”与“模电”组成。而且先学的“模电”后学的“”数电&#xff0c;故期中考试主要以“模电”为主&#xff0c;期末考试主要以“…

编译WSL内核,用于操作usb读卡器

wsl2默认不能操作usb读卡器&#xff0c;但是对于嵌入式linux开发来说&#xff0c;需要经常对tf卡进行操作&#xff0c;随时都会使用到usb读卡器的访问。下面讲述如何开启wsl2的usb读卡器的访问&#xff0c;主要涉及到以下2个步骤&#xff1a; wsl2本质是一个虚拟机&#xff0c…

【GO】protobuf在golang中的测试用例

上篇文章介绍了如何安装protobuf环境&#xff0c;文章链接如下 【Go】protobuf介绍及安装-CSDN博客 本节介绍protobuf在gRPC中具体如何使用&#xff0c;并编写测试用例 一、Protobuf是如何工作的 .proto文件是protobuf一个重要的文件&#xff0c;它定义了需要序列化数据的结…

Ubuntu 20.0 + mysql 8.0 用户和密码修改

第一步 下载&#xff08;简单,注意联网&#xff09;Ubuntu 终端输入以下两行命令 (1) 数据库的服务端及客户端数据库的开发软件包 sudo apt-get install mysql-server mysql-client (2) 数据库的开发软件包 sudo apt-get install libmysqlclient-dev 第二步 查看是否安装成功 …

深度分析电动工具的发展趋势,盘点几个极具潜力的科技功能点

纵观市场发展规律&#xff0c;人类的每一次能源转型&#xff0c;都会带来大量红利商机&#xff0c;也会催生整个产业链的彻底革新。 一、电动工具的惊人爆发力 比如说电动工具这个大品类&#xff0c;在近两年意想不到地成为全球隐形增长冠军。主要原因在于海外市场有大量 DIY…

HNU-电路与电子学-2019期末A卷(不含解析)

【写在前面】 电路与电子学好像是从2020级开设的课程&#xff0c;故实际上目前只有2020与2021两个年级考过期末考试。 这门课程主要由所谓的“数电”与“模电”组成。而且先学的“模电”后学的“”数电&#xff0c;故期中考试主要以“模电”为主&#xff0c;期末考试主要以“数…

持续集成交付CICD:GitLab Webhook触发Jenkins流水线

目录 一、实验 1.Jenkins远程下载GiaLab仓库代码 2.curl远程触发Jenkins流水线 3.GitLab Webhook触发Jenkins流水线 二、问题 1.GitLab配置Webhook时报错 一、实验 1.Jenkins远程下载GiaLab仓库代码 (1) Jenkins添加选项参数 (2)添加字符参数 (3)查看构建参数情况 (4)添…

孩子都能学会的FPGA:第二十一课——用线性反馈移位寄存器实现伪随机序列

&#xff08;原创声明&#xff1a;该文是作者的原创&#xff0c;面向对象是FPGA入门者&#xff0c;后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门&#xff0c;作者不光让大家知其然&#xff0c;还要让大家知其所以然&#xff01;每个工程作者都搭建了全自动化的仿…

神经网络常用归一化和正则化方法解析(一)

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…

CRM:提升营销效果的关键

一场成功的营销活动&#xff0c;可以帮助企业扩大知名度&#xff0c;获取大量的优质商机。作为专业的管理软件&#xff0c;CRM系统同样具备营销管理的能力&#xff0c;帮助企业实现营销活动的规划、执行和监控&#xff0c;提高营销效果。下面说说&#xff0c;CRM营销自动化对企…

职场人的年底总结,年初规划,又要开始啦!

在2023年&#xff0c;你可能错过了某些重要的职业发展机会&#xff0c;或者错失了一些与家人和朋友共度的时光。也可能经历了企业的降本增效&#xff0c;面临了被否定和裁员的风险&#xff1b;或者是得到了企业的重用和提拔&#xff0c;一个人撑起了整个业务部门。这些经历不仅…