首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >装饰JFreeChart

装饰JFreeChart
EN

Stack Overflow用户
提问于 2010-11-17 01:08:46
回答 5查看 2.9K关注 0票数 3

我想在角落里用时间戳装饰我生成的所有JFreeCharts。在JFreeChart框架中,有没有一种方法可以在生成图表后在图像上绘制?

编辑:请注意,这些图表是在后台线程中生成的,并通过servlet分发,因此没有GUI,我不能只在单独的组件上显示时间戳。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-11-19 02:28:23

在对它进行了更多的研究之后,我找到了一个解决方案,它可以让你在JFreeChart完成后在图像上任意绘制,所以我将它发布在这里供后人使用。在我的例子中,我将图表写成一个OutputStream,所以我的代码看起来像这样:

代码语言:javascript
复制
BufferedImage chartImage = chart.createBufferedImage(width, height, null);
Graphics2D g = (Graphics2D) chartImage.getGraphics();
/* arbitrary drawing happens here */
EncoderUtil.writeBufferedImage(chartImage, ImageFormat.PNG, outputStream);
票数 1
EN

Stack Overflow用户

发布于 2010-11-17 01:16:20

一种方法是子类化ChartPanel并覆盖paint(Graphics)方法,以首先链接到super.paint(Graphics),然后在图表顶部呈现额外的文本。

不过,这对我来说有点麻烦,我个人倾向于简单地将ChartPanel添加到另一个容器JPanel,以及表示时间戳的JLabel

票数 4
EN

Stack Overflow用户

发布于 2010-11-17 01:17:32

看看这里的这篇论坛帖子:

http://www.jfree.org/phpBB2/viewtopic.php?f=3&t=27939

使用ImageIcon作为水印的:

代码语言:javascript
复制
ImageIcon icon = new ImageIcon(new URL(watermarkUrl));
Image image = icon.getImage();
chart.setBackgroundImage(image);
chart.setBackgroundImageAlignment(Align.CENTER);
chart.getPlot().setBackgroundAlpha(0.2f);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4196853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档