7

我想给图表背景一个透明的外观(不是完全透明,而是一点点)。这是我的代码。我添加了几行代码来增加透明度,但我猜它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);
4

3 回答 3

5

我发现我必须为图表和绘图使用透明颜色:

val trans = new Color(0xFF, 0xFF, 0xFF, 0)
chart.setBackgroundPaint(trans)
plot .setBackgroundPaint(trans)
于 2013-10-23T11:52:52.863 回答
2

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

于 2012-04-23T01:28:17.530 回答
1

我遇到了类似的问题,但是在我将背景图像设置为 0.0f 后它得到了解决,即

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

alpha 透明度(在 0.0f 到 1.0f 的范围内,其中 0.0f 是完全透明的,而 1.0f 是完全不透明的)。

这是因为 PNG(便携式网络图形)格式支持 alpha 通道透明度。

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

p.setBackgroundPaint(新颜色(127, 127, 127, 64)); // 你的透明代码

p.setBackgroundPaint(新颜色(255,255,255,0));// 我的透明度代码

于 2012-05-22T06:42:18.253 回答