Как настроить заполнение серий в диаграмме с областями через API диаграммы BIRT?

Я пытаюсь создать градиентную заливку для ряда в диаграмме с областями, которую я строю с помощью API диаграмм BIRT, но книга «Интеграция и расширение BIRT» и Interwebs, как ни странно, ничего не говорят о том, как заставить ее работать. Кажется, что бы я ни делал, я всегда получаю плоский цвет из палитры по умолчанию. Я пытался использовать 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 использовать мой градиент в качестве заливки области?


person Robert J. Walker    schedule 05.05.2009    source источник


Ответы (1)


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

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

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

person Ar3s    schedule 26.05.2009
comment
Да, похоже, это помогает. Однако мы отказались от BIRT и перешли на другой пакет! :-) - person Robert J. Walker; 27.05.2009
comment
А? Могу я спросить вас, почему вы отказались от него? Я не хочу быть любопытным или что-то в этом роде, но я прохожу стажировку во французской компании, где в конце мне придется оценить Бирта, поэтому любое мнение приветствуется! ^^ Кстати, если я могу продолжать спрашивать вас, вы создали какие-либо интерактивные отчеты только из кода Java? Я столкнулся с некоторыми очень загадочными проблемами по этому вопросу :/ - person Ar3s; 28.05.2009
comment
Основным мотивом отказа от BIRT была крайняя сложность переопределения поведения рисования по умолчанию, помимо простых вещей, таких как цвет, учитывая, что многие из соответствующих методов были окончательными. В конце концов, мы выбрали Джаспера; он использует JFreeChart для построения диаграмм, который гораздо более гибок с точки зрения настройки рисования диаграмм. - person Robert J. Walker; 23.06.2009