我想在角落里用时间戳装饰我生成的所有JFreeCharts。在JFreeChart框架中,有没有一种方法可以在生成图表后在图像上绘制?
编辑:请注意,这些图表是在后台线程中生成的,并通过servlet分发,因此没有GUI,我不能只在单独的组件上显示时间戳。
发布于 2010-11-19 02:28:23
在对它进行了更多的研究之后,我找到了一个解决方案,它可以让你在JFreeChart完成后在图像上任意绘制,所以我将它发布在这里供后人使用。在我的例子中,我将图表写成一个OutputStream,所以我的代码看起来像这样:
BufferedImage chartImage = chart.createBufferedImage(width, height, null);
Graphics2D g = (Graphics2D) chartImage.getGraphics();
/* arbitrary drawing happens here */
EncoderUtil.writeBufferedImage(chartImage, ImageFormat.PNG, outputStream);发布于 2010-11-17 01:16:20
一种方法是子类化ChartPanel并覆盖paint(Graphics)方法,以首先链接到super.paint(Graphics),然后在图表顶部呈现额外的文本。
不过,这对我来说有点麻烦,我个人倾向于简单地将ChartPanel添加到另一个容器JPanel,以及表示时间戳的JLabel。
发布于 2010-11-17 01:17:32
看看这里的这篇论坛帖子:
http://www.jfree.org/phpBB2/viewtopic.php?f=3&t=27939
使用ImageIcon作为水印的:
ImageIcon icon = new ImageIcon(new URL(watermarkUrl));
Image image = icon.getImage();
chart.setBackgroundImage(image);
chart.setBackgroundImageAlignment(Align.CENTER);
chart.getPlot().setBackgroundAlpha(0.2f);https://stackoverflow.com/questions/4196853
复制相似问题