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

时间:2017-03-02 20:28:34

标签: oxyplot

我想添加一个位于绘图区域特定位置的TextAnnotation,其方式与轴平移或缩放无关 - 类似于水印。

我注意到TextAnnotation位置只能由DataPoint确定,而ImageAnnotation具有用于定位的X和Y属性。

1 个答案:

答案 0 :(得分:3)

很容易创建一个自定义的:

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

请注意,您应该设置Font,FontSize等:

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

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

希望有所帮助: