using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Data;
using
System.Windows.Forms.DataVisualization.Charting;
using
System.Drawing;
using
System.Windows.Forms;
namespace
KryptonFormAirCompressor.BLL
{
class
StartRun
{
static
DateTime startTime = DateTime.Now.AddSeconds(-1);
DateTime endTime = startTime.AddSeconds(6);
DateTime kd = DateTime.Parse(
"00:00:01"
);
Random rd =
new
Random();
//隨機(jī)函數(shù),產(chǎn)生Y軸數(shù)據(jù)
DataTable dt =
new
DataTable();
//創(chuàng)建數(shù)據(jù)表,存儲數(shù)據(jù)
int
flag = 0;
//設(shè)置Timer控件是否生效
int
i = 0;
//顯示數(shù)據(jù)表中的數(shù)據(jù)行數(shù)
double
yMax = 400;
double
yMin = -400;
double
yStep = 200;
Chart mychart =
new
Chart();
//圖表初始化
public
void
chartInit(Chart ch, TabPage tp)
{
TabPage tabPage2 = tp;
Chart chInit = ch;
ch.Series[
"Series1"
].Points.Clear();
chInit.Width = tabPage2.Width / 2 - 1;
chInit.Height = tabPage2.Height / 3 - 25;
chInit.BackColor = Color.Azure;
//設(shè)置是否在內(nèi)部繪圖區(qū)域中自動設(shè)置合適的圖表元素
chInit.ChartAreas[
"ChartArea1"
].Position.Auto =
false
;
chInit.ChartAreas[
"ChartArea1"
].Position.X = 0;
chInit.ChartAreas[
"ChartArea1"
].Position.Y = 0;
chInit.ChartAreas[
"ChartArea1"
].Position.Width = 100;
chInit.ChartAreas[
"ChartArea1"
].Position.Height = 100;
chInit.ChartAreas[
"ChartArea1"
].InnerPlotPosition.Auto =
false
;
chInit.ChartAreas[
"ChartArea1"
].InnerPlotPosition.X = 7;
chInit.ChartAreas[
"ChartArea1"
].InnerPlotPosition.Y = 4;
chInit.ChartAreas[
"ChartArea1"
].InnerPlotPosition.Width = 88;
chInit.ChartAreas[
"ChartArea1"
].InnerPlotPosition.Height = 85;
////設(shè)置X軸字體類型、大小、顏色
//chInit.ChartAreas["ChartArea1"].AxisX.LabelStyle.Font = new System.Drawing.Font("宋體", 10f);
//chInit.ChartAreas["ChartArea1"].AxisX.LabelStyle.ForeColor = Color.Black;
////設(shè)置Y軸字體類型、大小、顏色
//chInit.ChartAreas["ChartArea1"].AxisY.LabelStyle.Font = new System.Drawing.Font("宋體", 10f);
//chInit.ChartAreas["ChartArea1"].AxisY.LabelStyle.ForeColor = Color.Black;
}
public
double
chart(Chart ch,
int
category, DataTable table,
double
min,
double
max,
double
now)
{
mychart = ch;
dt = table;
yMin = min;
yMax = max;
yStep = (yMax - yMin) / 4;
DataRow dr = dt.NewRow();
dr[
"XTime"
] = DateTime.Now.ToString(
"HH:mm:ss"
);
switch
(category)
{
case
0:
dr[
"YTemp"
] = rd.Next(-360, 360);
break
;
case
1:
dr[
"YTemp"
] = rd.Next(-10, 50);
break
;
case
2:
dr[
"YTemp"
] = rd.Next(-80, 80);
break
;
case
3:
dr[
"YTemp"
] = rd.Next(-360, 360);
break
;
case
4:
dr[
"YTemp"
] = rd.Next(-360, 360);
break
;
case
5:
dr[
"YTemp"
] = rd.Next(-360, 360);
break
;
case
6:
dr[
"YTemp"
] = rd.Next(-360, 360);
break
;
case
7:
dr[
"YTemp"
] = rd.Next(-10, 50);
break
;
case
8:
dr[
"YTemp"
] = rd.Next(-80, 80);
break
;
case
9:
dr[
"YTemp"
] = rd.Next(-360, 360);
break
;
case
10:
dr[
"YTemp"
] = rd.Next(-360, 360);
break
;
case
11:
dr[
"YTemp"
] = rd.Next(-360, 360);
break
;
case
12:
dr[
"YTemp"
] = rd.Next(-360, 360);
break
;
case
13:
dr[
"YTemp"
] = rd.Next(-800, 1000);
break
;
case
14:
dr[
"YTemp"
] = rd.Next(-50, 10);
break
;
case
15:
dr[
"YTemp"
] = rd.Next(-60, 20);
break
;
case
16:
dr[
"YTemp"
] = rd.Next(-360, 360);
break
;
case
17:
dr[
"YTemp"
] = rd.Next(-10, 80);
break
;
default
:
dr[
"YTemp"
] = rd.Next(-360, 360);
break
;
//"大氣壓力",
//"環(huán)境溫度",
//"環(huán)境溫度",
//"吸氣溫度",
//"進(jìn)氣壓力",
//"一級吸氣溫度",
//"一級排氣壓力",
//"一級排氣溫度",
//"中冷壓差",
//"二級吸氣溫度",
//"二級排氣壓力",
//"二級排氣溫度",
//"噴嘴壓差",
//"噴嘴溫度",
//"轉(zhuǎn)速",
//"扭矩",
//"電壓",
//"電流",
}
dt.Rows.Add(dr);
#region 折線圖
mychart.DataSource = dt;
//綁定數(shù)據(jù)
mychart.Series[
"Series1"
].ChartType = SeriesChartType.Spline;
//設(shè)置圖表類型
mychart.Series[
"Series1"
].IsValueShownAsLabel =
false
;
//顯示數(shù)據(jù)點(diǎn)的值
mychart.Series[
"Series1"
].BorderColor = Color.Green;
//mychart.Series["Series1"].LegendText = "動態(tài)溫度點(diǎn)";
//mychart.Series["Series1"].Legend.Remove(1);
mychart.Series[
"Series1"
].IsVisibleInLegend =
false
;
mychart.Series[
"Series1"
].MarkerStyle = MarkerStyle.Circle;
//線條上的數(shù)據(jù)點(diǎn)標(biāo)志類型
mychart.Series[
"Series1"
].MarkerBorderWidth = 0;
mychart.Series[
"Series1"
].MarkerColor = Color.Red;
//////設(shè)置是否在內(nèi)部繪圖區(qū)域中自動設(shè)置合適的圖表元素
//mychart.ChartAreas["ChartArea1"].Position.Auto = false;
//mychart.ChartAreas["ChartArea1"].Position.X = 0;
//mychart.ChartAreas["ChartArea1"].Position.Y = 1;
//mychart.ChartAreas["ChartArea1"].Position.Width = 100;
//mychart.ChartAreas["ChartArea1"].Position.Height = 100;
//mychart.ChartAreas["ChartArea1"].InnerPlotPosition.Auto = false;
//mychart.ChartAreas["ChartArea1"].InnerPlotPosition.X = 5;
//mychart.ChartAreas["ChartArea1"].InnerPlotPosition.Y = 3;
//mychart.ChartAreas["ChartArea1"].InnerPlotPosition.Width = 90;
//mychart.ChartAreas["ChartArea1"].InnerPlotPosition.Height = 85;
i = dt.Rows.Count - 1;
now = Convert.ToDouble(dt.Rows[i][
"YTemp"
].ToString());
mychart.Series[0].Points.AddXY(Convert.ToDateTime(dt.Rows[i][
"XTime"
].ToString()).ToOADate(), Convert.ToDouble(dt.Rows[i][
"YTemp"
].ToString()));
//X軸設(shè)置
//mychart.ChartAreas["ChartArea1"].AxisX.Title = "時間";//X軸標(biāo)題
mychart.ChartAreas[
"ChartArea1"
].AxisX.TitleAlignment = StringAlignment.Near;
//設(shè)置X軸標(biāo)題的名稱所在位置位近
mychart.ChartAreas[
"ChartArea1"
].AxisX.MajorTickMark.Enabled =
true
;
//坐標(biāo)軸上的刻度線
mychart.ChartAreas[
"ChartArea1"
].AxisX.MajorGrid.Enabled =
true
;
//不顯示豎著的分割線
mychart.ChartAreas[
"ChartArea1"
].AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
//主網(wǎng)格為虛線
mychart.ChartAreas[
"ChartArea1"
].AxisX.LineColor = Color.Blue;
//X軸顏色
mychart.ChartAreas[
"ChartArea1"
].AxisX.IsMarksNextToAxis =
true
;
//mychart.ChartAreas["ChartArea1"].AxisX.LabelStyle.IsEndLabelVisible = false;//最后一個標(biāo)簽點(diǎn)顯示
//圖像上方的X2軸設(shè)置
mychart.ChartAreas[
"ChartArea1"
].AxisX2.Enabled = AxisEnabled.True;
mychart.ChartAreas[
"ChartArea1"
].AxisX2.MajorGrid.Enabled =
false
;
mychart.ChartAreas[
"ChartArea1"
].AxisX2.MajorTickMark.Enabled =
false
;
mychart.ChartAreas[
"ChartArea1"
].AxisX2.LineColor = Color.Blue;
mychart.ChartAreas[
"ChartArea1"
].AxisX2.LabelStyle.Enabled =
false
;
//設(shè)置X軸字體類型、大小、顏色
mychart.ChartAreas[
"ChartArea1"
].AxisX.LabelStyle.Font =
new
System.Drawing.Font(
"宋體"
, 10f);
mychart.ChartAreas[
"ChartArea1"
].AxisX.LabelStyle.ForeColor = Color.Black;
//設(shè)置Y軸字體類型、大小、顏色
mychart.ChartAreas[
"ChartArea1"
].AxisY.LabelStyle.Font =
new
System.Drawing.Font(
"宋體"
, 10f);
mychart.ChartAreas[
"ChartArea1"
].AxisY.LabelStyle.ForeColor = Color.Black;
/************************************************************************/
/* 本文重點(diǎn)講解時間格式的設(shè)置
* 但第一個點(diǎn)并不能保證在原點(diǎn)第一個時間坐標(biāo)位置,與時間間隔跨度有關(guān)系
* 需要設(shè)置最小時間,最大小時,時間間隔類型,時間間隔值等四個參數(shù),以保證當(dāng)前網(wǎng)絡(luò)跨度內(nèi)容顯示6個主網(wǎng)絡(luò)線*/
/************************************************************************/
mychart.Series[
"Series1"
].XValueType = ChartValueType.DateTime;
//X軸標(biāo)簽為時間類型
mychart.ChartAreas[
"ChartArea1"
].AxisX.LabelStyle.Format =
"HH:mm:ss"
;
//X軸上顯示時、分、秒
if
(DateTime.Now.ToOADate() > endTime.ToOADate())
{
endTime = endTime.AddSeconds(6);
//延長X時間軸
//設(shè)置時間單位的最小、最大值
mychart.ChartAreas[
"ChartArea1"
].AxisX.Minimum = startTime.ToOADate();
mychart.ChartAreas[
"ChartArea1"
].AxisX.Maximum = endTime.ToOADate();
//跨度為秒,間隔是通過最大時間與最小時間差相減除6所得,所以有6個間隔線
mychart.ChartAreas[
"ChartArea1"
].AxisX.IntervalType = DateTimeIntervalType.Seconds;
TimeSpan jianGe = endTime - startTime;
mychart.ChartAreas[
"ChartArea1"
].AxisX.Interval = (jianGe.TotalSeconds) / 6;
}
//Y軸設(shè)置
//mychart.ChartAreas["ChartArea1"].AxisY.Title = "氣溫";//Y軸標(biāo)題
mychart.ChartAreas[
"ChartArea1"
].AxisY.TitleAlignment = StringAlignment.Far;
//設(shè)置Y軸標(biāo)題的名稱所在位置位遠(yuǎn)
mychart.ChartAreas[
"ChartArea1"
].AxisY.Interval = yStep;
mychart.ChartAreas[
"ChartArea1"
].AxisY.Maximum = yMax;
mychart.ChartAreas[
"ChartArea1"
].AxisY.Minimum = yMin;
mychart.ChartAreas[
"ChartArea1"
].AxisY.IsStartedFromZero =
true
;
mychart.ChartAreas[
"ChartArea1"
].AxisY.MajorTickMark.Enabled =
false
;
//坐標(biāo)軸上的刻度線,為false時少了小橫桿線
mychart.ChartAreas[
"ChartArea1"
].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
mychart.ChartAreas[
"ChartArea1"
].AxisY.LineColor = Color.Blue;
//圖像上方的X2軸設(shè)置
mychart.ChartAreas[
"ChartArea1"
].AxisY2.Enabled = AxisEnabled.True;
mychart.ChartAreas[
"ChartArea1"
].AxisY2.MajorGrid.Enabled =
false
;
mychart.ChartAreas[
"ChartArea1"
].AxisY2.MajorTickMark.Enabled =
false
;
mychart.ChartAreas[
"ChartArea1"
].AxisY2.LineColor = Color.Blue;
mychart.ChartAreas[
"ChartArea1"
].AxisY2.LabelStyle.Enabled =
false
;
#endregion
return
now;
}
}
}