我希望为OxyPlot
的{{1}}添加一些比纯色更漂亮的颜色,即某种类型的RectangleAnnotation
(brush
等)。我在WPF工作。
这个问题(PlotAreaBackground can be defined using gradient ?)在他们的GitHub网站上建议注释可以给出一个渐变,但我找不到建议的例子。
有没有办法将画笔应用到GradientBrush
?或在图表上创建与轴上的值相关联的彩色区域的任何其他方式?
答案 0 :(得分:2)
我认为这是suggested example。
我将其修改为看起来像一个矩形注释,因为该示例填充整个背景。希望它有所帮助。
<强>效应:强>
<强>代码:强>
// 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);