2009-05-05 6 views
0

Ich versuche, eine Farbverlaufsfüllung für eine Serie in einem Flächendiagramm zu erstellen, das ich über die BIRT-Diagramm-API erstelle, aber das Buch "Integrating and Extending BIRT" und die Interwebs scheinen merkwürdig still darüber zu sein, wie es funktioniert. Es scheint, egal was ich mache, ich bekomme immer eine flache Farbe aus der Standardpalette. Ich habe versucht, mit SeriesDefinition.getSeriesPalette(). Update (Gradient) und sogar meine eigene Palette mit dem Farbverlauf füllen und setzen Sie diese auf der SeriesDefinition, aber ohne Erfolg. Ich habe auch bemerkt, dass, wenn ich keine Verschiebung() auf der Palette, selbst wenn es Verschiebung (0) ist, die Javadocs behaupten, nichts tun, ich NullPointerException bekomme, wenn ich versuche, das Diagramm zu generieren:Wie Anpassen von Serien füllen Bereich Diagramm über BIRT Diagramm 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 

Hier ist der neuesten (ohne Funktion) Code, ich habe versucht:

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

was ist also die magische Beschwörung füllt den BIRT Charting-API zu verwenden, um mein Gradient als das Gebiet zu bekommen?

Antwort

1

Dieser Code funktioniert für mich, ich habe eine hässliche farbige serie bekommen ...

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

Hoffe, es wird Ihnen helfen, p

+0

Ja, das so aussieht funktioniert der Trick. Wir gaben jedoch BIRT auf und zogen in ein anderes Paket um! :-) –

+0

Awh? Kann ich dich fragen, warum du es aufgegeben hast? Ich möchte nicht neugierig oder so sein, aber ich mache ein Praktikum in einer französischen Firma, wo ich am Ende Birt bewerten muss, damit jede Meinung willkommen ist! ^^ Übrigens, wenn ich Sie weiter fragen kann, haben Sie interaktive Berichte nur aus Java-Code erstellt? Ich stehe vor einigen sehr rätselhaften Problemen zu diesem Thema:/ – Ar3s

+0

Der Hauptmotivationsfaktor für das Ausladen von BIRT war die extreme Schwierigkeit, das Standardzeichnungsverhalten über einfache Dinge wie Farbe hinaus zu überschreiben, da viele der relevanten Methoden endgültig waren. Letztendlich sind wir mit Jasper gegangen; Es verwendet JFreeChart für die Diagrammerstellung, was hinsichtlich der Anpassung der Diagrammzeichnung viel flexibler ist. –

Verwandte Themen