在 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 });
此外,请注意,您也可以添加其他属性,例如边框颜色和其他内容,但是,事情可能会变得复杂(我没有尝试)。
希望对您有所帮助:
我想添加一个 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 });
此外,请注意,您也可以添加其他属性,例如边框颜色和其他内容,但是,事情可能会变得复杂(我没有尝试)。
希望对您有所帮助: