2012-04-22 18 views
6

Quiero dar al fondo del gráfico un aspecto transparente (no totalmente transparente, pero un poco). Aquí está mi código. He agregado algunas líneas de código para agregar transparencia, pero creo que el ChartPanel no se está volviendo transparente. Después de escribir esas líneas de código, el fondo del gráfico aparece en gris.JFreechart ChartPanel no obtiene 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

Sin su [sscce] (http://sscce.org/), que Solo puedo adivinar qué es gris y por qué. – trashgod

Respuesta

2

Debido a esto puede ser más bien depende de la plataforma y la versión, lo podría hacer en setBackgroundImageAlpha() en el Plot para conseguir el efecto deseado.

1

que se enfrentaron al problema similar sin embargo, se resolvió después de configurar la imagen de fondo a 0.0f es decir

setBacgroundImageAlpha (0.0f). ya que establece la transparencia alfa utilizada al dibujar la imagen de fondo.

transparencia alfa (en el rango de 0.0f a 1.0f, donde 0.0f es completamente transparente y 1.0f es completamente opaco).

Esto funciona porque el formato PNG (Portable Network Graphics) admite la transparencia del canal alfa.

La única diferencia que encontré entre el código y el mío estaba en

p.setBackgroundPaint (nuevo color (127, 127, 127, 64)); // su código de transparencia

p.setBackgroundPaint (nuevo Color (255,255,255,0)); // mi código de transparencia

4

me encontré con que tengo que usar un color transparente tanto para la carta y la trama:

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