使用画笔进行Oxyplot注释

时间:2016-01-20 09:40:41

标签: c# wpf xaml oxyplot

我希望为OxyPlot的{​​{1}}添加一些比纯色更漂亮的颜色,即某种类型的RectangleAnnotationbrush等)。我在WPF工作。

这个问题(PlotAreaBackground can be defined using gradient ?)在他们的GitHub网站上建议注释可以给出一个渐变,但我找不到建议的例子。

有没有办法将画笔应用到GradientBrush?或在图表上创建与轴上的值相关联的彩色区域的任何其他方式?

1 个答案:

答案 0 :(得分:2)

我认为这是suggested example

我将其修改为看起来像一个矩形注释,因为该示例填充整个背景。希望它有所帮助。

<强>效应:

enter image description here

<强>代码:

// create a gradient image of height n
int n = 256;
var imageData1 = new OxyColor[n, 1];
for (int i = 0; i < n; i++)
{
    imageData1[i, 0] = OxyColor.Interpolate(OxyColors.Red, OxyColors.Blue, i / (n - 1.0));
}

PngBitmapEncoder encoder = new PngBitmapEncoder();
PngEncoder encode = new PngEncoder(new PngEncoderOptions());
var image1 = new OxyImage(encode.Encode(imageData1));

ImageAnnotation anotation = new ImageAnnotation
{
    ImageSource = image1,
    Interpolate = true,
    Layer = AnnotationLayer.BelowAxes,
    X = new PlotLength(0.5, PlotLengthUnit.RelativeToPlotArea),
    Y = new PlotLength(0.5, PlotLengthUnit.RelativeToPlotArea),
    Width = new PlotLength(0.1, PlotLengthUnit.RelativeToPlotArea),
    Height = new PlotLength(0.5, PlotLengthUnit.RelativeToPlotArea),
    HorizontalAlignment = HorizontalAlignment.Left,
    VerticalAlignment = VerticalAlignment.Top
};
plotModel.Annotations.Add(anotation);