C# 使用自带chart时,标记点在运行程序时不显示,在界面设置属性时,有显示

开心大爆炸 2020-08-31 06:33:55
设置marker属性时,在程序运行时没有任何反应。。。。求各位大佬指示。


使用的代码:



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using System.IO;
namespace testchart
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
const int DATALENGH = 3648;
double[] Scale_param = new double[DATALENGH];//系数
double[] Scale_Xparam = new double[DATALENGH];//系数对应的X轴
private void Form1_Load(object sender, EventArgs e)
{
ReadData(@"E:/wokspace//data/bk_signal.txt", DATALENGH, out Scale_Xparam, out Scale_param);

InitCharts();
//chart1.Series[0].Points.Clear();
chart1.Titles[0].Text = "原始信号";
double[] dx = new double[8] {4,2,5,1,6,2,7,3};
for (int i = 0; i < 8; i ++)
{
chart1.Series[0].Points.AddXY(i, dx[i]);
}


}

private void InitCharts()
{
//主图
Series series = chart1.Series[0];
// 画样条曲线(Spline)
series.ChartType = SeriesChartType.FastLine;
// 设置显示范围
ChartArea chartArea = chart1.ChartAreas[0];
chartArea.AxisX.Minimum = 0;//X轴
chartArea.AxisX.Maximum = 10;
chartArea.AxisY.Minimum = -0.1;//Y轴
chartArea.AxisY.Maximum = 10;//0.7
chartArea.AxisX.Title = "波长/nm";
chartArea.AxisY.Title = "能量";
//设置标题
chart1.Titles.Add("光谱波形");
chart1.Titles[0].Text = "光谱波形";
chart1.Series[0].MarkerStyle = MarkerStyle.Circle;
//this.chart1.Series[0].Points.Clear();


//

}


public void ReadData(string strPath, int nLen, out double[] dXTemp, out double[] dTemp)
{
dXTemp = new double[nLen];
dTemp = new double[nLen];
if (File.Exists(strPath))
{
string strCon = "";
StreamReader reader = new StreamReader(strPath);
int i = 0;
while (!reader.EndOfStream)
{
int nId = -1;
strCon = reader.ReadLine();
nId = strCon.IndexOf(',');//存储形式为x,y
if (nId >= 0)
{
string strBKData = strCon.Substring(nId + 1);
dTemp[i] = Convert.ToDouble(strBKData);

//X轴数据
string strXData = strCon.Substring(0, nId);
dXTemp[i] = Convert.ToDouble(strXData);
i++;
}

}
reader.Close();
reader.Dispose();
reader = null;
}
}

private void button1_Click(object sender, EventArgs e)
{
chart1.Series[0].BorderWidth = 2; //线条粗细

//chart1.Series[0].MarkerBorderColor = Color.Red; //标记点边框颜色

//chart1.Series[0].MarkerBorderWidth = 3; //标记点边框大小

//chart1.Series[0].MarkerColor = Color.Red; //标记点中心颜色

//chart1.Series[0].MarkerSize = 5; //标记点大小
//chart1.Series[0].MarkerStep = 1;

//chart1.Series[0].MarkerStyle = MarkerStyle.Circle; //标记点类型



chart1.Series[0].Points[3].MarkerBorderColor = Color.Red; //标记点边框颜色

chart1.Series[0].Points[3].MarkerBorderWidth = 3; //标记点边框大小

chart1.Series[0].Points[3].MarkerColor = Color.Red; //标记点中心颜色

chart1.Series[0].Points[3].MarkerSize = 5;

chart1.Series[0].Points[3].MarkerStyle = MarkerStyle.Circle; //标记点类型
}
}






对应的图片:
我给曲线设置为fastline时,运行marker点没有显示。

如果给曲线设置为Spline时,设置好marker后,所有点都显示了,也不满足我的要求。我只要求在个别点上显示,而不是全部的点显示。

设置曲线格式为Spline时


...全文
851 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧