JFreechart ChartPanel没有获得Transparenent

时间:2012-04-22 15:26:31

标签: java swing jfreechart

我想给图表背景一个透明的外观(不完全透明,但有点)。这是我的代码。我添加了一些代码行来添加透明度,但我想ChartPanel没有透明化。写完这些代码行后,图表背景显示为灰色。

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

3 个答案:

答案 0 :(得分:5)

我发现我必须使用透明色 来绘制图表和情节:

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

答案 1 :(得分:2)

因为这可能非常依赖于平台和版本,您可以查看Plot上的setBackgroundImageAlpha()以获得所需的效果。

答案 2 :(得分:1)

我遇到了类似的问题但是在我将背景图像设置为0.0f即

之后它得到了解决

setBacgroundImageAlpha(0.0F)。因为它设置绘制背景图像时使用的Alpha透明度。

alpha透明度(范围为0.0f至1.0f,其中0.0f为完全透明,1.0f为完全不透明)。

这是有效的,因为PNG(可移植网络图形)格式支持Alpha通道透明度。

我的代码和我的代码之间的唯一区别在于

p.setBackgroundPaint(new Color(127,127,127,64)); //您的透明度代码

p.setBackgroundPaint(new Color(255,255,255,0)); //我的透明度代码