【问题标题】:C# - Oxyplot: How to display text as a tracker valueC# - Oxyplot:如何将文本显示为跟踪器值
【发布时间】:2019-08-27 06:08:55
【问题描述】:

我正在使用 oxyplot(C#,Windows 窗体)来绘制实验的日志文件。用户可以在测试过程中输入 cmets,这些 cmets 与文本和时间戳一起保存,并应与数据一起显示在图中。起初我尝试使用 TextAnnotations,但 cmets 可能比注释允许的更冗长和频繁。

我的解决方案是制作一个 ScatterPlot 并让 cmets 成为单个数据点,然后当鼠标悬停在 Tracker 上时显示时间戳和评论文本。现在,我无法显示文本。

我为我的数据点创建了一个新类来保存文本,ScatterSeries 将接受该类:

    public class CommentPoint : IScatterPointProvider
    {
        public CommentPoint(double x, double y, string text)
        {
            X = x; Y = y; Text = text;
        }
        public double X, Y;
        public string Text;
        public ScatterPoint GetScatterPoint()
        {
            return new ScatterPoint(X, Y);
        }
    }

然后,我尝试修改 TrackerFormatString 使其显示文本:

        Series.TrackerFormatString = "{2}\n{Text}";

但是当悬停在数据点上时,跟踪器只显示时间戳,而不是文本。我之前可以通过显示自定义数字来完成这项工作,但我不知道是否可以使用字符串。

这是与不同系列一起使用的:

        Series.TrackerFormatString = "{0}\n{2}\n{Scale:#.00 " + unit + "}";

其中“Scale”是我想要显示的自定义属性。所以我想问题是,我需要添加到 {Text} 以使其工作/是否可以在跟踪器中显示文本?

编辑:我忘了补充,我的紧急解决方案是将 cmets 保存在 ScatterSeries 的标题中,并为每条评论创建一个新系列,但如果可能的话我想避免这种情况。

【问题讨论】:

    标签: c# string oxyplot tracker


    【解决方案1】:

    我还没有尝试过,但如果您将Text 转换为属性,我很确定它会起作用。您只能绑定到属性,而不是普通的类成员,而且我认为后台正在进行一些绑定。所以试试这个:

    public string Text {get; set;}
    

    它会很像here这个例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 2016-01-20
      • 1970-01-01
      相关资源
      最近更新 更多