我想给图表背景一个透明的外观(不完全透明,但有点)。这是我的代码。我添加了一些代码行来添加透明度,但我想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);
答案 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)); //我的透明度代码