2009-05-05 51 views
0

我想创建一个渐变填充的,我通过BIRT图表API建筑面积图表中的一个系列,但书“集成和扩展BIRT”和Interwebs似乎好奇地沉默有关如何得到它的工作。看起来不管我做什么,我总是从默认调色板中获得平坦的颜色。我尝试过使用SeriesDefinition.getSeriesPalette()。update(Gradient),甚至用渐变填充它并在SeriesDefinition上设置我自己的调色板,但无济于事。我还注意到,如果我不在调色板上执行shift(),即使它是shift(0),Javadocs的声明也不会执行任何操作,当我尝试生成图表时,会收到NullPointerException:如何通过BIRT图表API自定义系列填充区域图表?

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

那么什么是魔法咒语,以获得BIRT图表API使用我的梯度作为区域填充?

回答

1

此代码对我的作品,我得到一个丑陋的彩色系列...

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

希望它会帮助你,P

+0

是啊,看起来像做的伎俩。但是,我们放弃了BIRT,转而采用其他软件包! :-) – 2009-05-27 15:54:38