在 OxyPlot 中,如何添加一个相对于 PlotArea 的 TextAnnotation 未绑定到轴?

In OxyPlot, how to add a TextAnnotation that is relative to the PlotArea a not bound to the axes?

我想添加一个 TextAnnotation,它以独立于轴平移或缩放的方式定位在绘图区域的特定位置 - 类似于水印。

我注意到TextAnnotation的位置只能通过DataPoint来确定,而ImageAnnotation有X和Y属性来定位。

创建自定义的很容易:

public class CustomTextAnnotation : Annotation
{ 
    public CustomTextAnnotation()
    { } 

    public string Text { get; set; }
    public double X { get; set; } 
    public double Y { get; set; }

    public override void Render(IRenderContext rc)
    {
        base.Render(rc);
        double pX = PlotModel.PlotArea.Left + X;
        double pY = PlotModel.PlotArea.Top + Y;
        rc.DrawMultilineText(new ScreenPoint(pX, pY), Text, TextColor, Font, FontSize, FontWeight);
    }  
}

请注意,您应该设置字体、字体大小等:

 plotModel.Annotations.Add(new CustomTextAnnotation() {
          Text = "A B C",
          X = 110,
          Y = 10,
          Font = "Times New Roman",
          FontSize = 12,
          TextColor = OxyColors.Black });

此外,请注意,您也可以添加其他属性,例如边框颜色和其他内容,但是,事情可能会变得复杂(我没有尝试)。

希望对您有所帮助: