Как настроить диаграмму области заполнения серии с помощью API диаграммы BIRT? - PullRequest
0 голосов
/ 05 мая 2009

Я пытаюсь создать градиентную заливку для ряда в диаграмме области, которую я строю с помощью API диаграммы BIRT, но книга «Интеграция и расширение BIRT» и межплетение, как ни странно, молчат о том, как заставить его работать , Кажется, что бы я ни делал, я всегда получаю плоский цвет из палитры по умолчанию. Я попытался использовать SeriesDefinition.getSeriesPalette (). Update (Gradient) и даже создать свою собственную палитру с градиентной заливкой и установить ее в SeriesDefinition, но безрезультатно. Я также заметил, что если я не выполняю shift () на Палитре, даже если это shift (0), что, как утверждают Javadocs, ничего не даст, я получаю исключение NullPointerException при попытке создать диаграмму:

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

Вот последний (нерабочий) код, который я пробовал:

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

Так в чем же заключается магическое заклинание, позволяющее API BIRT для построения графиков использовать мой градиент в качестве заполнения области?

1 Ответ

1 голос
/ 26 мая 2009

Этот код работает для меня, я получаю уродливую серию ...

sdY.getSeriesPalette().update(GradientImpl.create(ColorDefinitionImpl.create(255,255,255), ColorDefinitionImpl.create(200,0,0,150), 90, false));

Надеюсь, это поможет вам; p

...