4

I would like to add a TextAnnotation that is positioned in a specific location on the plot area in a way that it is independent of the axis pan or zoom - similar to a watermark.

I noticed the TextAnnotation position can only be determined by a DataPoint, while the ImageAnnotation has the X and Y properties for positioning.

Jonas
  • 1,365
  • 3
  • 21
  • 39

1 Answers1

5

It is easy to create a custom one:

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);
    }  
}

Please note that you should set the Font, FontSize, etc.:

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

Also, please note that you can add other properties such as border colors and other stuff too, however, things might get complicated (I didn't try).

Hope it helps:

rmojab63
  • 3,513
  • 1
  • 15
  • 28