柚子快報(bào)邀請碼778899分享:C# Chart曲線控件專題
一、chart曲線控件使用1
1.控件基本設(shè)置
chart1.ChartAreas[0].AxisY.IsStartedFromZero = false; //設(shè)置Y軸自適應(yīng)
chart1.Series["瞬時值"].BorderWidth = 2; // 設(shè)置曲線寬度為2個像素,注意[]中寫入的Series的Name
chart1.Series["瞬時值"].Color = Color.Red; // 設(shè)置曲線顯示顏色
chart1.ChartAreas[0].AxisX.Minimum = 0; //設(shè)置X軸最小值
chart1.ChartAreas[0].AxisX.Maximum = 100;//設(shè)置X軸最大值
//chart1.ChartAreas[0].AxisX.Minimum = Double.NaN;//設(shè)置X軸最小值為自適應(yīng)
//chart1.ChartAreas[0].AxisX.Maximum = Double.NaN;//設(shè)置X軸最小值為自適應(yīng)
chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false;//取消chart1X軸方向顯示單元格
chart1.ChartAreas[0].AxisY.MajorGrid.Enabled = false;//取消chart1Y軸方向顯示單元格
chart1.Series[0].Points.Clear(); //清除控件上所有點(diǎn)位
chart1.Update(); //刷新控件顯示
chart1.Series[0].Points.RemoveAt(0); //每次移除最早的點(diǎn),需要配合顯示的點(diǎn)數(shù)使用
2.曲線鼠標(biāo)滾輪縮放
// 添加鼠標(biāo)滾輪事件 在窗體加載時進(jìn)行綁定
chart1.MouseWheel += Chart1_MouseWheel;
private void Chart1_MouseWheel(object sender, MouseEventArgs e)
{
// 獲取鼠標(biāo)滾輪的滾動方向
int delta = e.Delta;
// 根據(jù)滾動方向進(jìn)行放大或縮小
if (delta < 0)
{
// 放大圖表
chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset();
chart1.ChartAreas[0].AxisY.ScaleView.ZoomReset();
}
else if (delta > 0)
{
// 縮小圖表
double xMin = chart1.ChartAreas[0].AxisX.ScaleView.ViewMinimum;
double xMax = chart1.ChartAreas[0].AxisX.ScaleView.ViewMaximum;
double yMin = chart1.ChartAreas[0].AxisY.ScaleView.ViewMinimum;
double yMax = chart1.ChartAreas[0].AxisY.ScaleView.ViewMaximum;
double posXStart = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) - (xMax - xMin) / 3;
double posXFinish = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) + (xMax - xMin) / 3;
double posYStart = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) - (yMax - yMin) / 3;
double posYFinish = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) + (yMax - yMin) / 3;
chart1.ChartAreas[0].AxisX.ScaleView.Zoom(posXStart, posXFinish);
chart1.ChartAreas[0].AxisY.ScaleView.Zoom(posYStart, posYFinish);
}
}
3.1 曲線添加數(shù)據(jù)(添加X軸和Y軸點(diǎn)位)
chart1.Series[0].ChartType =
System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine; //設(shè)置曲線樣式為線條
chart1.Series[0].BorderWidth = 2; // 設(shè)置曲線寬度為2個像素,注意[]中寫入的Series的Name
chart1.Series[0].Color = Color.Red; // 設(shè)置曲線顯示顏色
chart1.Series[0].Name = "Test"; //設(shè)置曲線名稱
for (int i = 0; i < 10; i++)
{
chart1.Series[0].Points.AddXY(i, i*2); //添加點(diǎn)位
}
運(yùn)行結(jié)果:
?3.2曲線添加數(shù)據(jù)(添加Y軸點(diǎn)位)
chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine; //設(shè)置曲線樣式為線條
chart1.Series[0].BorderWidth = 2; // 設(shè)置曲線寬度為2個像素,注意[]中寫入的Series的Name
chart1.Series[0].Color = Color.Red; // 設(shè)置曲線顯示顏色
chart1.Series[0].Name = "Test"; //設(shè)置曲線名稱
chart1.Series[0].Points.AddY(0);//添加點(diǎn)位
chart1.Series[0].Points.AddY(20);//
chart1.Series[0].Points.AddY(10);//添加點(diǎn)位
chart1.Series[0].Points.AddY(0);//添加點(diǎn)位
運(yùn)行結(jié)果:
二、chart曲線控件使用2(2024年5月31日13:57:15)
通過鼠標(biāo)左鍵調(diào)整數(shù)據(jù)點(diǎn)在Y軸方向的大小
1、初始化設(shè)置
chart1.ChartAreas[0].BackColor = Color.Black; //設(shè)置chart控件的圖標(biāo)區(qū)域背景顏色為黑色
chart1.ChartAreas[0].AxisY.IsStartedFromZero = false;//設(shè)置chart控件的圖標(biāo)區(qū)域Y軸最小值是否為0 false表示從數(shù)據(jù)點(diǎn)的最小值獲取,true表示從0開始(正數(shù))
chart1.ChartAreas[0].AxisX.Minimum = double.NaN; //設(shè)置chart控件的圖標(biāo)區(qū)域X軸范圍最小值 為非數(shù)字類型
chart1.ChartAreas[0].AxisX.Maximum = double.NaN; //設(shè)置chart控件的圖標(biāo)區(qū)域X軸范圍最大值 為非數(shù)字類型
chart1.ChartAreas[0].AxisX.Interval = 3; //設(shè)置X軸間距(分辨率)
chart1.Series[0].MarkerSize = 10; //設(shè)置曲線0的顯示大小為10(曲線的粗細(xì))
chart1.ChartAreas[0].CursorX.IsUserEnabled = true; // 允許在X軸啟用光標(biāo)
chart1.ChartAreas[0].CursorX.IsUserSelectionEnabled = false; // 不允許選擇數(shù)據(jù)點(diǎn)后在X軸上移動
chart1.ChartAreas[0].CursorX.LineWidth = 3; // 設(shè)置光標(biāo)寬度
chart1.ChartAreas[0].CursorY.IsUserEnabled = true; // 允許在Y軸啟用光標(biāo)
chart1.ChartAreas[0].CursorY.IsUserSelectionEnabled = false; // 不允許選擇數(shù)據(jù)點(diǎn)后在X軸上移動
chart1.ChartAreas[0].CursorY.LineWidth = 3; // 設(shè)置光標(biāo)寬度
// chart1.MouseWheel += Chart1_MouseWheel; //設(shè)置鼠標(biāo)滾輪縮放曲線大小事件
2、設(shè)置chart控件 按下,移動 ,釋放鼠標(biāo)事件
private void chart1_MouseDown(object sender, MouseEventArgs e) //鼠標(biāo)按下事件
{
// 獲取選中的數(shù)據(jù)點(diǎn)位
HitTestResult result = chart1.HitTest(e.X, e.Y);
if (result.ChartElementType == ChartElementType.DataPoint)
{
// 設(shè)置數(shù)據(jù)點(diǎn)位允許拖動
chart1.Cursor = Cursors.Default;
result.Series.Points[result.PointIndex].IsValueShownAsLabel = true;
result.Series.Points[result.PointIndex].MarkerColor = Color.Red;
result.Series.Points[result.PointIndex].MarkerStyle = MarkerStyle.Cross;
}
}
private void chart1_MouseMove_1(object sender, MouseEventArgs e) //鼠標(biāo)移動事件
{
// 拖動數(shù)據(jù)點(diǎn)位
if (e.Button == MouseButtons.Left)
{
HitTestResult result = chart1.HitTest(e.X, e.Y);
if (result.ChartElementType == ChartElementType.DataPoint)
{
double yValue = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Y);
result.Series.Points[result.PointIndex].SetValueY(yValue);
result.Series.Points[result.PointIndex].Label = yValue.ToString();
result.Series.Points[result.PointIndex].LabelForeColor = Color.Red;
#region 每次拖動完畢,將曲線控件上所有點(diǎn)位 重新賦值給listview控件
// 獲取series1曲線的所有數(shù)據(jù)點(diǎn)
DataPointCollection points = chart1.Series[0].Points;
List
int count = 1;
// 遍歷數(shù)據(jù)點(diǎn)集合,獲取每個數(shù)據(jù)點(diǎn)的坐標(biāo)和其他信息
foreach (DataPoint point in points)
{
double x = point.XValue; // 獲取數(shù)據(jù)點(diǎn)的X坐標(biāo)值
double y = point.YValues[0]; // 獲取數(shù)據(jù)點(diǎn)的Y坐標(biāo)值
decimals.Add(y);
listView1.Items[1].SubItems[count].Text = y.ToString("F4"); //修改指定行列的數(shù)據(jù)為任意值
count++;
}
#endregion
}
}
else
{
// 結(jié)束拖動
chart1.Cursor = Cursors.Default;
foreach (DataPoint point in chart1.Series[0].Points)
{
point.MarkerStyle = MarkerStyle.None;
}
}
}
private void chart1_MouseUp(object sender, MouseEventArgs e) //鼠標(biāo)釋放事件
{
// 結(jié)束拖動
chart1.Cursor = Cursors.Default;
foreach (DataPoint point in chart1.Series[0].Points)
{
point.MarkerStyle = MarkerStyle.None;
}
}
2、運(yùn)行結(jié)果
柚子快報(bào)邀請碼778899分享:C# Chart曲線控件專題
好文推薦
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。