最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實(shí)現(xiàn)運(yùn)行狀態(tài)堆疊柱狀圖

 更新時(shí)間:2022年02月12日 11:47:13   作者:機(jī)器俠客  
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)運(yùn)行狀態(tài)堆疊柱狀圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C#實(shí)現(xiàn)運(yùn)行狀態(tài)堆疊柱狀圖的具體代碼,供大家參考,具體內(nèi)容如下

需求通過(guò)柱狀圖顯示設(shè)備運(yùn)行時(shí)間停止時(shí)間,稼動(dòng)率等
通過(guò)數(shù)據(jù)庫(kù)查詢記錄,按小時(shí)顯示顯示目標(biāo)數(shù)據(jù)。

界面設(shè)計(jì)

添加用戶控件(窗體)

代碼如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace TestRunChart
{

? ? public partial class SysTimeBarChart : UserControl
? ? {
? ? ? ? public List<SysTimeCnt> ListAllTime=new List<SysTimeCnt>();
? ? ? ? public SysTimeBarChart()
? ? ? ? {
? ? ? ? ? ? InitializeComponent();
? ? ? ? ? ? this.chart1.Series.Clear();
? ? ? ? ? ??
? ? ? ? } ? ?
? ? ? ? public DateTime timeStart
? ? ? ? {?
? ? ? ? ? ? get{
? ? ? ? ? ? ? ? DateTime Time1 = this.dateTimePickerLast.Value;
? ? ? ? ? ? ? ? DateTime Time2 = this.dateTimePickerStart.Value;
? ? ? ? ? ? ? ? return Time1 >= Time2? Time2 : Time1;
? ? ? ? ? ? } ??
? ? ? ? }
? ? ? ? public DateTime timeEnd
? ? ? ? {
? ? ? ? ? ? get
? ? ? ? ? ? {
? ? ? ? ? ? ? ? DateTime Time1 = this.dateTimePickerLast.Value;
? ? ? ? ? ? ? ? DateTime Time2 = this.dateTimePickerStart.Value;
? ? ? ? ? ? ? ? return Time1 > Time2 ? Time1 : Time2;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? public int Hours
? ? ? ? {
? ? ? ? ? ? get
? ? ? ? ? ? {
? ? ? ? ? ? ? ? TimeSpan ts1 = new TimeSpan(timeStart.Ticks);
? ? ? ? ? ? ? ? TimeSpan ts2 = new TimeSpan(timeEnd.Ticks);
? ? ? ? ? ? ? ? TimeSpan ts = ts1.Subtract(ts2).Duration();
? ? ? ? ? ? ? ? return ts.Hours;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? public int Days
? ? ? ? {
? ? ? ? ? ? get
? ? ? ? ? ? {
? ? ? ? ? ? ? ? TimeSpan ts1 = new TimeSpan(timeStart.Ticks);
? ? ? ? ? ? ? ? TimeSpan ts2 = new TimeSpan(timeEnd.Ticks);
? ? ? ? ? ? ? ? TimeSpan ts = ts1.Subtract(ts2).Duration();
? ? ? ? ? ? ? ? return ts.Days;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? private void btn_GetChart_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? // 判斷時(shí)間設(shè)置
? ? ? ? ? ? if (Hours == 0)
? ? ? ? ? ? ? ? MessageBox.Show("時(shí)間設(shè)置間隔小于1小時(shí),請(qǐng)重新設(shè)置時(shí)間", "警告", MessageBoxButtons.OK);
? ? ? ? ? ? else if(Days != 0)
? ? ? ? ? ? ? ? MessageBox.Show("時(shí)間間隔大于24小時(shí),請(qǐng)重新設(shè)置時(shí)間", "警告", MessageBoxButtons.OK);
? ? ? ? ? ? else
? ? ? ? ? ? ? ? Plot();
? ? ? ? }

? ? ? ? private void btn_clear_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? this.chart1.Series.Clear(); ? ? ? ? ? ? ? ??
? ? ? ? ? ? this.chart1.Legends.Clear();
? ? ? ? ? ? this.chart1.ChartAreas.Clear();
? ? ? ? ? ? ListAllTime.Clear();
? ? ? ? }
? ? ? ? /// <summary>
? ? ? ? /// ?圖表繪制
? ? ? ? /// </summary>
? ? ? ? private void Plot()
? ? ? ? {
? ? ? ? ? ? this.chart1.Series.Clear(); ? ? ? ? ? ? ? ? ?// 清空?qǐng)D表
? ? ? ? ? ? this.chart1.Legends.Clear();
? ? ? ? ? ? this.chart1.ChartAreas.Clear();
? ? ? ? ? ? if (ListAllTime == null || ListAllTime.Count == 0)
? ? ? ? ? ? { MessageBox.Show("數(shù)據(jù)為空"); return; }
? ? ? ? ? ? // 輔助設(shè)置
? ? ? ? ? ? AxiesSet();
? ? ? ? ? ? LegendSet();
? ? ? ? ? ? // 表格繪制
? ? ? ? ? ? if (this.rbt_runTime.Checked)
? ? ? ? ? ? ? ? ChartPlot(TimeType.RunTime);
? ? ? ? ? ? else if (this.rbt_StopTime.Checked)
? ? ? ? ? ? ? ? ChartPlot(TimeType.StopTime);
? ? ? ? ? ? else if (this.rbt_almtime.Checked)
? ? ? ? ? ? ? ? ChartPlot(TimeType.AlmTime);
? ? ? ? ? ? else if (this.rbt_runrate.Checked)
? ? ? ? ? ? ? ? ChartPlot(TimeType.RunRate);
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? ChartPlot(TimeType.RunTime);
? ? ? ? ? ? ? ? ChartPlot(TimeType.StopTime);
? ? ? ? ? ? ? ? ChartPlot(TimeType.AlmTime);
? ? ? ? ? ? ? ? ChartPlot(TimeType.RunRate);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? enum TimeType
? ? ? ? {
? ? ? ? ? ? RunTime,
? ? ? ? ? ? AlmTime,
? ? ? ? ? ? StopTime,
? ? ? ? ? ? RunRate
? ? ? ? }
? ? ? ? /// <summary>
? ? ? ? /// ?數(shù)據(jù)繪制
? ? ? ? /// </summary>
? ? ? ? /// <param name="seriesName">數(shù)據(jù)名字</param>
? ? ? ? /// <param name="data">數(shù)據(jù)</param>
? ? ? ? /// <param name="chartType">chart類型</param>
? ? ? ? /// <param name="isPrimary">是否為主軸數(shù)據(jù)</param>
? ? ? ? private void ChartPlot(TimeType type)
? ? ? ? {
? ? ? ? ? ? string seriesName = "";
? ? ? ? ? ? SeriesChartType chartType = SeriesChartType.StackedColumn;
? ? ? ? ? ? bool isPrimary = true;
? ? ? ? ? ? switch (type)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? case TimeType.RunTime:
? ? ? ? ? ? ? ? ? ? seriesName = "運(yùn)行時(shí)間"; break;
? ? ? ? ? ? ? ? case TimeType.StopTime:
? ? ? ? ? ? ? ? ? ? seriesName = "待機(jī)時(shí)間"; break;
? ? ? ? ? ? ? ? case TimeType.AlmTime:
? ? ? ? ? ? ? ? ? ? seriesName = "報(bào)警時(shí)間"; break;
? ? ? ? ? ? ? ? case TimeType.RunRate:
? ? ? ? ? ? ? ? ? ? seriesName = "稼動(dòng)率";
? ? ? ? ? ? ? ? ? ? chartType = SeriesChartType.Line;
? ? ? ? ? ? ? ? ? ? isPrimary = false;//非主軸,右邊軸
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? default: break;
? ? ? ? ? ? }
? ? ? ? ? ? Series series = this.chart1.Series.Add(seriesName);
? ? ? ? ? ? series.ChartType = chartType; ? ? ? // 圖表類型
? ? ? ? ? ? series.YAxisType = isPrimary ? AxisType.Primary : AxisType.Secondary;
? ? ? ? ? ? series.BorderWidth = 2;
? ? ? ? ? ? series.Label = isPrimary ? "#VAL" : "#VAL{P}";
? ? ? ? ? ? int i = 0;
? ? ? ? ? ? foreach (var m in ListAllTime)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? double mvalue = 0;
? ? ? ? ? ? ? ? switch (type)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? case TimeType.RunTime:
? ? ? ? ? ? ? ? ? ? ? ? mvalue = m.RunTime; break;
? ? ? ? ? ? ? ? ? ? case TimeType.StopTime:
? ? ? ? ? ? ? ? ? ? ? ? mvalue = m.StopTime; break;
? ? ? ? ? ? ? ? ? ? case TimeType.AlmTime:
? ? ? ? ? ? ? ? ? ? ? ? mvalue = m.AlmTime; break;
? ? ? ? ? ? ? ? ? ? case TimeType.RunRate:
? ? ? ? ? ? ? ? ? ? ? ? mvalue = m.RunRate; break;
? ? ? ? ? ? ? ? ? ? default: break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? series.Points.AddXY(i, mvalue);
? ? ? ? ? ? ? ? i++;
? ? ? ? ? ? }
? ? ? ? }

? ? ? ? /// <summary>
? ? ? ? /// 坐標(biāo)軸設(shè)置
? ? ? ? /// </summary>
? ? ? ? private void AxiesSet()
? ? ? ? {
? ? ? ? ? ? ChartArea chartAreas = this.chart1.ChartAreas.Add("ChartAreas");
? ? ? ? ? ? chartAreas.AxisX.MajorGrid.Enabled = false; ? ? ? ? ? ? // 坐標(biāo)軸
? ? ? ? ? ? chartAreas.AxisY.MajorGrid.Enabled = false; ? ? ? ? ? ? // Y軸主軸
? ? ? ? ? ? chartAreas.AxisY.Maximum = 60;
? ? ? ? ? ? chartAreas.AxisY2.MajorGrid.Enabled = false; ? ? ? ? ? ?// Y軸次軸
? ? ? ? ? ? chartAreas.AxisY2.Enabled = AxisEnabled.True;
? ? ? ? ? ? chartAreas.AxisY2.LabelStyle.Format = "0%";
? ? ? ? ? ? chartAreas.AxisY2.Maximum = 1;
? ? ? ? }

? ? ? ? /// <summary>
? ? ? ? /// ?標(biāo)簽設(shè)置
? ? ? ? /// </summary>
? ? ? ? private void LegendSet()
? ? ? ? {
? ? ? ? ? ? Legend legend = this.chart1.Legends.Add("Legend");
? ? ? ? ? ? legend.Alignment = StringAlignment.Center; ? ? ? ? ? ? ?// 標(biāo)簽居中
? ? ? ? ? ? legend.Docking = Docking.Top; ? ? ? ? ? ? ? ? ? ? ? ? ? // ? ? 上方
? ? ? ? }
? ? ? ? /// <summary>
? ? ? ? /// 初始化數(shù)據(jù)列,默認(rèn)全部停止時(shí)間
? ? ? ? /// </summary>
? ? ? ? /// <param name="brandom"></param>
? ? ? ? /// <returns></returns>
? ? ? ? public bool InitDataList(bool brandom=false)
? ? ? ? {
? ? ? ? ? ? if (Days != 0)
? ? ? ? ? ? { MessageBox.Show("時(shí)間設(shè)置異常"); return false; }
? ? ? ? ? ? var startTime = timeStart;
? ? ? ? ? ? ListAllTime.Clear();
? ? ? ? ? ? Random rd = new Random();
? ? ? ? ? ? for (int i = 0; i <= Hours; i++)
? ? ? ? ? ? {

? ? ? ? ? ? ? ? var num = rd.Next(0, 59);
? ? ? ? ? ? ? ? SysTimeCnt mCnt = new SysTimeCnt()
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? _InSertTime = string.Format("{0:yyyy-MM-dd-HH-mm}", startTime),
? ? ? ? ? ? ? ? ? ? RunTime = brandom? num:0,
? ? ? ? ? ? ? ? ? ? AlmTime = brandom ? rd.Next(0, 60 - num):0
? ? ? ? ? ? ? ? };
? ? ? ? ? ? ? ? ListAllTime.Add(mCnt);
? ? ? ? ? ? ? ? startTime.AddHours(1);
? ? ? ? ? ? }
? ? ? ? ? ? return true;
? ? ? ? }
? ? }
? ? public class SysTimeCnt
? ? {
? ? ? ? public string _InSertTime;
? ? ? ? public string InSertTime => _InSertTime;
? ? ? ? public void UpdateInSertTime()
? ? ? ? {
? ? ? ? ? ? _InSertTime = string.Format("{0:yyyy-MM-dd-HH-mm}", DateTime.Now);
? ? ? ? }
? ? ? ? public double RunTime;
? ? ? ? public double AlmTime;
? ? ? ? public double StopTime
? ? ? ? {
? ? ? ? ? ? get { return 60 - RunTime - AlmTime; }

? ? ? ? }
? ? ? ? public double RunRate
? ? ? ? {
? ? ? ? ? ? get { return Math.Round(Convert.ToDouble(this.RunTime / 60), 2); }
? ? ? ? }
? ? }
}

主窗體代碼

?public partial class Form1 : Form
? ? {
? ? ? ? public Form1()
? ? ? ? {
? ? ? ? ? ? InitializeComponent();
? ? ? ? }

? ? ? ? private void btn_AddData_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? var bSucessd = sysTimeBarChart1.InitDataList(true);
? ? ? ? ? ? if (bSucessd)
? ? ? ? ? ? ? ? MessageBox.Show("完成");
? ? ? ? }
? ? }

顯示效果

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • WindowsForm實(shí)現(xiàn)TextBox占位符Placeholder提示功能

    WindowsForm實(shí)現(xiàn)TextBox占位符Placeholder提示功能

    這篇文章主要介紹了WindowsForm實(shí)現(xiàn)TextBox占位符Placeholder提示,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • C#自定義字符串壓縮和解壓縮的方法

    C#自定義字符串壓縮和解壓縮的方法

    這篇文章主要介紹了C#自定義字符串壓縮和解壓縮的方法,通過(guò)自定義C#字符串操作類實(shí)現(xiàn)對(duì)字符串的壓縮與解壓的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • 詳解WPF中的隧道路由和冒泡路由事件

    詳解WPF中的隧道路由和冒泡路由事件

    這篇文章主要介紹了WPF中的隧道路由和冒泡路由事件的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c#的wpf,感興趣的朋友可以了解下
    2021-04-04
  • WinForm IP地址輸入框控件實(shí)現(xiàn)

    WinForm IP地址輸入框控件實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了WinForm IP地址輸入框控件的實(shí)現(xiàn)代碼,基于VS2010模擬windows系統(tǒng)自帶IP輸入框,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 初學(xué)C#所需明白的那些點(diǎn)

    初學(xué)C#所需明白的那些點(diǎn)

    這篇文章主要介紹了初學(xué)C#所需明白的那些點(diǎn),以及一些零碎知識(shí)點(diǎn)筆記,以供大家學(xué)習(xí)參考
    2023-03-03
  • C# 中的??操作符淺談

    C# 中的??操作符淺談

    (??) 用于如果類不為空值時(shí)返回它自身,如果為空值則返回之后的操作
    2013-04-04
  • C# 泛型集合的自定義類型排序的實(shí)現(xiàn)

    C# 泛型集合的自定義類型排序的實(shí)現(xiàn)

    這篇文章主要介紹了C# 泛型集合的自定義類型排序的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 在WinForm中發(fā)送HTTP請(qǐng)求的實(shí)現(xiàn)方法

    在WinForm中發(fā)送HTTP請(qǐng)求的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇在WinForm中發(fā)送HTTP請(qǐng)求的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • C# 并行和多線程編程——Task進(jìn)階知識(shí)

    C# 并行和多線程編程——Task進(jìn)階知識(shí)

    這篇文章主要介紹了C# 并行和多線程編程——Task進(jìn)階知識(shí)的的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-02-02
  • C#/VB.NET實(shí)現(xiàn)在Word文檔中添加頁(yè)眉和頁(yè)腳

    C#/VB.NET實(shí)現(xiàn)在Word文檔中添加頁(yè)眉和頁(yè)腳

    頁(yè)眉位于文檔中每個(gè)頁(yè)面的頂部區(qū)域,常用于顯示文檔的附加信息;頁(yè)腳位于文檔中每個(gè)頁(yè)面的底部的區(qū)域,常用于顯示文檔的附加信息。今天這篇文章就將為大家展示如何以編程的方式在在?Word?文檔中添加頁(yè)眉和頁(yè)腳
    2023-03-03

最新評(píng)論

乌审旗| 蒙城县| 塘沽区| 东至县| 东明县| 凤山县| 绥滨县| 左权县| 龙南县| 得荣县| 河津市| 郎溪县| 海口市| 天镇县| 昭平县| 巴楚县| 南汇区| 犍为县| 册亨县| 安远县| 宜昌市| 仁寿县| 保德县| 益阳市| 桂阳县| 双流县| 临夏市| 太仆寺旗| 叙永县| 旬阳县| 苍梧县| 昆明市| 中江县| 南召县| 桃源县| 浠水县| 凤台县| 霍山县| 垣曲县| 班戈县| 蒲城县|