2012-04-22 12 views
6

Desidero dare al grafico uno sfondo trasparente (non completamente trasparente ma un po '). Ecco il mio codice. Ho aggiunto alcune righe di codice per aggiungere trasparenza, ma suppongo che lo ChartPanel non diventi trasparente. Dopo aver scritto quelle linee di codice, il backgound del grafico appare grigio.JFreechart ChartPanel not getting Transparenent

JFreeChart chart = ChartFactory.createPieChart3D(
    "Full traffic view", pieDataset, true, true, true); 

PiePlot3D p = (PiePlot3D) chart.getPlot(); 

PieRenderer renderer = new PieRenderer(sampleColors); 
renderer.setColor(p, pieDataset); 
p.setDepthFactor(0.07); 
p.setCircular(true); 
p.setLabelOutlinePaint(null); 
p.setLabelBackgroundPaint(null); 
p.setLabelShadowPaint(null); 

p.setBackgroundPaint(new Color(127, 127, 127, 64)); // tranparency code 
p.setBackgroundImageAlpha(0.0f); 

p.setSimpleLabels(true); 
p.setLabelGenerator(null); 
p.setBackgroundPaint(
new GradientPaint(0, 0, Color.white, 0, 100, Color.white)); 
p.setDarkerSides(true); 
ChartPanel frame1 = new ChartPanel(chart); 
ChartPanel.setVisible(true); 
ChartPanel.add(frame1); 

ChartPanel.setSize(640, 400); 
+0

Senza il vostro [sscce] (http://sscce.org/), abbiamo posso solo indovinare cosa è grigio e perché. – trashgod

risposta

2

Perché questo può essere piuttosto dipendente dalla piattaforma e la versione, si potrebbe guardare setBackgroundImageAlpha() sul Plot per ottenere l'effetto desiderato.

1

ho affrontato il problema simile però ottenuto risolto dopo ho impostato l'immagine di sfondo per 0.0f cioè

setBacgroundImageAlpha (0.0f). poiché imposta la trasparenza alfa usata quando si disegna l'immagine di sfondo.

trasparenza alfa (nell'intervallo da 0.0f a 1.0f, dove 0.0f è completamente trasparente e 1.0f è completamente opaco).

Questo funziona perché il formato PNG (Portable Network Graphics) supporta la trasparenza del canale alfa.

L'unica differenza che ho trovato tra il codice e la mia era in

p.setBackgroundPaint (new Color (127, 127, 127, 64)); // il codice di transazione

p.setBackgroundPaint (new Color (255,255,255,0)); // mio codice trasparenza

4

ho scoperto che devo usare un colore trasparente sia per la tabella e la trama:

val trans = new Color(0xFF, 0xFF, 0xFF, 0) 
chart.setBackgroundPaint(trans) 
plot .setBackgroundPaint(trans)