首页 > 其他分享 >LIBS(1-数据的展示)

LIBS(1-数据的展示)

时间:2022-12-15 16:33:28浏览次数:47  
标签:set chartAreaLine 展示 get System LIBS new 数据 public

LIBS-数据的展示

libs中需要将数据给展示出来,

一开始打算自己写一个数据绘制的控件,参考了b站的视频WPF 图表控件库 WindChart 3_哔哩哔哩_bilibili

但在此遇到一个问题,在计算像素比的时候RenderSize这个属性在一些情况下为0,也始终找不到方法规避,于是换了微软的chart框架。同时找了篇文章做参考

Chart 类 (System.Windows.Forms.DataVisualization.Charting) | Microsoft Learn

WPF调用Winform Chart控件绘图 - StackMiao - 博客园 (cnblogs.com)

通过以上这两个资料,我们可以得出,在WPF中使用此框架绘制,需要在容器绘制,而绘制需要注意3个类,

  1. Series:控制绘图的类型和数据的注入
  2. ChartAreas :控制XY轴的样式
  3. Legends :图表图像的图例

将这三个类初始画赋值,添加到容器中就可以完成图标的绘制。

1.框架的引入

在程序集中添加

  • System.Windows.Forms;
  • System.Windows,Forms.DataVisualization;
  • WindowsFormsIntefration;

2.容器的添加

在XMAL中添加命名空间

  xmlns:Wchart="clr-namespace:System.Windows.Forms.DataVisualization.Charting;assembly=System.Windows.Forms.DataVisualization" 

引入容器,给容器一个名字

<WindowsFormsHost>
    <Wchart:Chart x:Name="ChartPlot"/>
 </WindowsFormsHost>

3.3种类的初始化和赋值

  1. 初始化三个类ChartArea,Series,Legend,我是为了方便调用,设置为了类的属性
  2. 对其的属性根据需要赋值。具体属性所代表的意义可以看微软官方文档
  3. 在容器中注入值,一个容器中可以注入多个Series类,所以在一个容器中可以显示多张图表。
public class OneChart
    {
        public OneChart()
        {
            chartAreaLine = new ChartArea();
            series = new Series();
            legend = new Legend();
            xYpointList = new List<XYpoint>();

            Init();

        }
      

        public ChartArea chartAreaLine { get; set; }
        public Series series { get; set; }
        public Legend legend { get; set; }
     

        private List<XYpoint> xYpointList;

        public List<XYpoint> XYpointList
        {
            get { return xYpointList; }
            set { xYpointList = value; DataChanged(); }
        }

        public string xTitle { get; set; } = "X轴";

        public string yTitle { get; set; } = "Y轴";

        public string LineTitle { get; set; } = "线条1";


        private void Init()
        {
            chartAreaLine.AxisX.Title = xTitle;
            chartAreaLine.AxisX.TitleAlignment = System.Drawing.StringAlignment.Far; // 标题对其方式

            chartAreaLine.AxisX.IntervalAutoMode = IntervalAutoMode.FixedCount; // 间隔的模式
            //chartAreaLine.AxisX.Interval = 2; // 轴的间隔
            chartAreaLine.AxisX.IntervalType = DateTimeIntervalType.Auto; // 轴的间隔单位类型,默认为auto

            chartAreaLine.AxisX.Minimum = 0; // 轴的起始点,最小值

            chartAreaLine.AxisX.ArrowStyle = AxisArrowStyle.Lines; // 箭头
            chartAreaLine.AxisX.MajorGrid.Enabled = false;  // 是否启用网格线

            chartAreaLine.AxisY.Title = yTitle;
            chartAreaLine.AxisY.IntervalType = DateTimeIntervalType.Auto;
            chartAreaLine.AxisY.ArrowStyle = AxisArrowStyle.Lines; // 箭头
            chartAreaLine.AxisY.TitleAlignment = System.Drawing.StringAlignment.Far;


            series.ChartType = SeriesChartType.Line; // 绘图类型
            series.Color = System.Drawing.Color.Red;
            series.Name = LineTitle;

            legend.Alignment = System.Drawing.StringAlignment.Near;
            legend.Docking = Docking.Right;
            legend.IsDockedInsideChartArea = true;
            legend.BackColor = System.Drawing.Color.Transparent;
   
        }

        public void DataChanged()
        {
            series.Points.Clear();
            foreach (var item in xYpointList)
            {
                series.Points.AddXY(item.X, item.Y);
            }
        }
    }

    public class XYpoint
    {
        public XYpoint(double x, double y)
        {
            X = x;
            Y = y;
        }
        public double X { get; set; }
        public double Y { get; set; }
    }

 public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();

            // 1.通过引用dll文件编写方法获取机器数据
           // GetData();

            // 2.处理数据
           // DealData();

            // 3.展示数据
            DisPlayData();

        }

        #region 成员变量


        // 初始化图标
        OneChart oneChart = new OneChart();
        #endregion

        #region 方法
        /// <summary>
        /// 展示数据
        /// </summary>
        public void DisPlayData()
        {
           
            // 给数据
            Random random = new Random();
            List<XYpoint> xYpoints = new List<XYpoint>();
            for (int i = 0; i < 500; i++)
            {
                xYpoints.Add(new XYpoint(i, random.Next(10, 40)));
            }
            oneChart.XYpointList = xYpoints;
          

            // 关联
            ChartPlot.Series.Add(oneChart.series);        
            ChartPlot.ChartAreas.Add(oneChart.chartAreaLine);
            ChartPlot.Legends.Add(oneChart.legend);
        }

        #endregion
       
        public void ChangeDateRandom()
        {
            this.Dispatcher.Invoke(() =>
            {
               
                Random random = new Random();
                List<XYpoint> xYpoints = new List<XYpoint>();
                for (int i = 0; i < 500; i++)
                {
                    xYpoints.Add(new XYpoint(i, random.Next(10, 40)));
                }
                oneChart.XYpointList = xYpoints;
               
            });
        }
    }

最后做出来的效果如图

标签:set,chartAreaLine,展示,get,System,LIBS,new,数据,public
From: https://www.cnblogs.com/alideluobo/p/16985378.html

相关文章

  • 字节输入流读数据 一个字节一个字节读
    importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;publicclassTeest3{publicstaticvoidmain(String[]args)t......
  • 字节输入流读数据 使用字节数组
    importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;publicclassTest4{publicstaticvoidmain(String[]args)th......
  • 【JVM】运行时数据区
    1、运行时数据区概述Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进......
  • Glist 刷新数据
    privatechangeData(backData){ this.data_arr=backData["data"]["list"]; if(this.data_arr){ this.list_scroller.refreshVirtualList(); this.list_scroller......
  • 数据库:评估安全风险4个要点
    互联网时代,不论是个人还是组织,都将数据视为一项重要的资产。为了便于存储、管理,企业常常会为各项数据建立一个数据库,如果没有做好安全风险防护,一旦数据库被攻占,企业将迎来很......
  • 数据化运营初探
    最近在研读《数据化运营系统方法与实践案例》,特在此做信息记录。先明确这次分析到底需要达成什么目的,在了解业务的基础上,明确应该从什么角度去切入,应该从哪些指标......
  • 数据仓库的字母缩写
    ODS:操作型数据存储,基础层DW数据分层,由下到上为DWD,DWB,DWS。DWD:datawarehousedetails细节数据层,是业务层与数据仓库的隔离层。主要对ODS数据层做一些数据清洗和......
  • 关于fread函数读取到的数据和实际统计的和数据不一样
    文件1.txt中的内容如下:  “123”   “456”用下面的方式统计文件的字节数:       fp=fopen("1.txt","r");    fseek(fp,0,SEEK_END);    fil......
  • idea 基本数据类型
    1、整数类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT分别占用1字节、2字节、3字节、4字节、8字节;任何整数类型都可以加上UNSIGNED属性,表示数据是无符号的,即非......
  • 框架第六课---ORM执行SQL语句,神奇的双下划线查询,ORM外键字段的创建,外键字段数据的增删
    昨日内容回顾模板语法之标签1.if判断2.for循环3.with语法ps:针对容器类型的数据获取内部数据值统一采用句点符自定义相关功能'''1.在应用下创建一个templatet......