Como personalizar o gráfico de preenchimento da área via API do gráfico BIRT?
Pergunta
Estou tentando criar um preenchimento de gradiente para uma série em um gráfico de área que estou construindo através da API do gráfico de Birt, mas o livro "integrando e estendendo Birt" e as interwebs parecem curiosamente silenciosas sobre como fazê -lo funcionar. Parece que não importa o que eu faça, sempre recebo uma cor plana da paleta padrão. Eu tentei usar o SérieDefinition.getSeriesPalette (). Update (gradiente) e até mesmo criando minha própria paleta com o gradiente preenchendo e configurando isso na série da série, mas sem sucesso. Também notei que, se eu não executar um turno () na paleta, mesmo que seja o turno (0), o que os javadocs afirmam que não fará nada, eu recebo NullPointerException quando tento gerar o gráfico:
Caused by: java.lang.NullPointerException
at org.eclipse.birt.chart.render.Area.renderDataPoints(Area.java:521)
at org.eclipse.birt.chart.render.Line.renderSeries(Line.java:570)
at org.eclipse.birt.chart.render.AxesRenderer.renderPlot(AxesRenderer.java:2181)
at org.eclipse.birt.chart.render.AxesRenderer.render(AxesRenderer.java:314)
at org.eclipse.birt.chart.factory.Generator.render(Generator.java:1368)
... 108 more
Aqui está o código mais recente (não trabalhador) que eu tentei:
Gradient gradient = FillUtil.createDefaultGradient(BirtReportBuilder.COLOR_WHITE);
gradient.setStartColor(ColorDefinitionImpl.WHITE());
gradient.setEndColor(ColorDefinitionImpl.create(76, 116, 131));
gradient.setDirection(90);
SeriesDefinition sdY = SeriesDefinitionImpl.create();
sdY.getQuery().setDefinition("\"Quantity\"");
Palette pal = PaletteImpl.create(gradient);
pal.shift(0);
sdY.setSeriesPalette(pal);
sdY.getSeries().add(as1);
yAxisPrimary.getSeriesDefinitions().add(sdY);
Então, qual é o encantamento mágico para fazer com que a API de gráficos de Birt use meu gradiente à medida que a área preenche?
Solução
Este código funciona para mim, eu recebo uma série feia de cor ...
sdY.getSeriesPalette().update(GradientImpl.create(ColorDefinitionImpl.create(255,255,255), ColorDefinitionImpl.create(200,0,0,150), 90, false));
Espero que isso ajude você; p