编辑
2025-02-05
C# 应用
00
请注意,本文编写于 90 天前,最后修改于 90 天前,其中某些信息可能已经过时。

目录

准备工作
完整代码
代码解释
十字光标和文本注释
注意事项

本示例展示了如何在WinForms应用程序中使用ScottPlot 5.0创建一个带有十字光标的交互式图表。我们将绘制一个正弦波,并添加一个跟随鼠标移动的十字光标。

准备工作

首先,确保你已经安装了必要的NuGet包:

  • ScottPlot (5.0.x)
  • ScottPlot.WinForms (5.0.x)

完整代码

以下是完整的C#代码,包含详细注释:

C#
public partial class Form1 : Form { private FormsPlot formsPlot1; private Crosshair crosshair; private ScottPlot.Plottables.Text text; public Form1() { InitializeComponent(); SetupPlot(); } private void SetupPlot() { // 创建 FormsPlot 控件 formsPlot1 = new FormsPlot(); formsPlot1.Plot.Font.Set("SimSun"); formsPlot1.Dock = DockStyle.Fill; this.Controls.Add(formsPlot1); // 生成示例数据(正弦波) int pointCount = 1000; double[] dataX = new double[pointCount]; double[] dataY = new double[pointCount]; for (int i = 0; i < pointCount; i++) { dataX[i] = i; dataY[i] = Math.Sin(i * 0.05); } // 添加散点图 var scatter = formsPlot1.Plot.Add.Scatter(dataX, dataY); scatter.Color = Colors.Blue; scatter.MarkerSize = 0; // 不显示点标记,只显示线 // 设置轴标签 formsPlot1.Plot.XLabel("X轴"); formsPlot1.Plot.YLabel("Y轴"); formsPlot1.Plot.Title("带十字光标的正弦波图"); // 创建十字光标 crosshair = formsPlot1.Plot.Add.Crosshair(0, 0); crosshair.MarkerColor = Colors.Red; crosshair.LineWidth = 1; crosshair.LinePattern = LinePattern.Dashed; // 创建一个文本注释来显示光标位置 text = formsPlot1.Plot.Add.Text("", 10, 10); text.Alignment = Alignment.UpperLeft; text.FontSize = 14; // 添加鼠标移动事件处理器 formsPlot1.MouseMove += FormsPlot1_MouseMove; } private void FormsPlot1_MouseMove(object sender, MouseEventArgs e) { // 获取鼠标在图表坐标系中的位置 var d = formsPlot1.Plot.GetCoordinates(e.X, e.Y); // 更新十字光标位置 crosshair.X = d.X; crosshair.Y = d.Y; // 更新文本注释 text.LabelText = $"X: {d.X:F2}, Y: {d.Y:F2}"; // 请求重绘 formsPlot1.Refresh(); } }

image.png

代码解释

十字光标和文本注释

  • crosshair = formsPlot1.Plot.Add.Crosshair(0, 0);:创建一个十字光标,初始位置在 (0, 0)。
    • crosshair.MarkerColor = Colors.Red;:设置十字光标的颜色为红色。
    • crosshair.LineWidth = 1;:设置线宽。
    • crosshair.LinePattern = LinePattern.Dashed;:设置线型为虚线。
  • text = formsPlot1.Plot.Add.Text("", 10, 10);:创建一个文本注释,用于显示十字光标的位置。
    • text.Alignment = Alignment.UpperLeft;:设置文本对齐方式为左上。
    • text.FontSize = 14;:设置文本字体大小。

注意事项

  • 这个示例使用了ScottPlot 5.0的新API,与早期版本可能有所不同。
  • 确保使用最新版本的ScottPlot和ScottPlot.WinForms包。

这个示例展示了如何创建一个基本的交互式图表,包括十字光标和坐标显示。你可以根据需要进一步自定义和扩展这个示例。

本文作者:rick

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!