一、 初始化界面
cs
RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;
- 这行代码设置了渲染模式为软件渲染模式。在 WPF(Windows Presentation Foundation)中,渲染模式决定了图形和界面元素如何在屏幕上绘制和呈现。软件渲染模式通常用于在不支持硬件加速的环境中进行图形绘制,或者在需要更高兼容性和稳定性的场景下使用。
cs
InitializeComponent();
- 这是一个 WPF 中常见的语句,用于初始化当前窗体或用户控件的组件。它通常在窗体或用户控件的构造函数中调用,用来加载 XAML 中定义的界面元素和布局。
cs
var dataSeries1 = new XyDataSeries<int, int>();
这段代码创建了一个 XyDataSeries
对象,该对象可以存储和管理 X 轴和 Y 轴均为整数类型的数据。这个对象可以用来添加、删除和操作图表中的数据点,从而在图表中展示这些数据
二、创建一系列近似于正弦的模拟数据
cs
double dou = 0; // 定义一个双精度浮点数变量
int XAxisLen = 2047; // 设置了X轴的长度,也是数据的个数
Random random = new Random(); // 创建随机数生成器
for (int i = 0; i < XAxisLen; i++) // 循环生成模拟数据
{
double noise = random.NextDouble() * 50 - 25; // 生成范围随机噪声
int yValue = (int)(Math.Sin(dou) * 200 + noise + 400); // 设置峰值并加上偏移量
dataSeries1.Append(i, yValue); // 向原始数据系列添加数据点
dou += 0.003; // 增加之后周期变短
}
-
double dou = 0;
- 定义一个名为
dou
的双精度浮点数变量,并初始化为 0。 - 这个变量将在循环中用于计算正弦波的值。
- 定义一个名为
-
int XAxisLen = 2047;
- 定义一个名为
XAxisLen
的整数变量,并将其设置为 2047。 - 这个变量表示 X 轴的长度,也是生成的数据点的个数。
- 定义一个名为
-
Random random = new Random();
- 创建一个
Random
类的实例random
,用于生成随机数。 Random
类提供生成伪随机数的功能。
- 创建一个
-
for (int i = 0; i < XAxisLen; i++)
- 使用
for
循环来生成模拟数据,循环次数为XAxisLen
(即 2047 次)。 i
是循环变量,从 0 开始,每次循环递增 1,直到小于XAxisLen
。
- 使用
-
double noise = random.NextDouble() * 50 - 25;
- 生成一个范围在 [-25, 25) 之间的随机噪声。
random.NextDouble()
生成一个范围在 [0.0, 1.0) 的双精度浮点数,将其乘以 50 后减去 25,即得到范围为 [-25, 25) 的噪声值。
-
int yValue = (int)(Math.Sin(dou) * 200 + noise + 400);
- 计算 y 轴的值
yValue
。 - 使用
Math.Sin(dou)
计算dou
的正弦值,并将其放大 200 倍,然后加上噪声和偏移量 400。 - 将结果转换为整数类型。
- 计算 y 轴的值
-
dataSeries1.Append(i, yValue);
- 将计算得到的 (i, yValue) 数据点添加到
dataSeries1
数据系列中。 i
作为 x 轴的值,yValue
作为 y 轴的值。
- 将计算得到的 (i, yValue) 数据点添加到
-
dou += 0.003;
- 在每次循环后,将
dou
增加 0.003。 - 这样可以在每次循环中逐渐增加正弦函数的输入值,生成连续的正弦波形数据。
- 在每次循环后,将
三、散点图的创建
cs
lineSeries1 = new XyScatterRenderableSeries // 创建一个散点图系列
{
DataSeries = dataSeries1, // 设置数据系列
PointMarker = new EllipsePointMarker { Width = 2, Height = 2, Fill = Colors.White }, // 设置点标记样式
YAxisId = "LeftYAxis" // 设置 Y 轴 ID
};
-
lineSeries1 = new XyScatterRenderableSeries
- 创建一个
XyScatterRenderableSeries
对象并将其赋值给lineSeries1
变量。 XyScatterRenderableSeries
是用于绘制散点图的类。
- 创建一个
-
DataSeries = dataSeries1,
- 将之前创建并填充的数据系列
dataSeries1
赋值给lineSeries1
的DataSeries
属性。 - 这意味着
lineSeries1
将使用dataSeries1
中的数据来绘制散点图。
- 将之前创建并填充的数据系列
-
PointMarker = new EllipsePointMarker { Width = 2, Height = 2, Fill = Colors.White },
- 设置散点图中点的标记样式。
PointMarker
属性被赋值为一个新的EllipsePointMarker
对象。EllipsePointMarker
是一个椭圆形的点标记,其Width
和Height
属性被设置为 2,表示点的大小为 2 像素。Fill = Colors.White
设置点的填充颜色为白色。
-
YAxisId = "LeftYAxis"
- 设置散点图系列使用的 Y 轴的 ID 为
"LeftYAxis"
。 - 这意味着
lineSeries1
将使用 ID 为"LeftYAxis"
的 Y 轴。
- 设置散点图系列使用的 Y 轴的 ID 为
sciChart.RenderableSeries.Add(lineSeries1); //
- 添加散点图系列到 SciChart 中