Swing:如何阅读组件下的图形信息?

时间:2009-05-19 11:59:31

标签: java user-interface swing graphics effects

我怎样才能“读取”组件下的图形信息 (假设为 BufferedImage )?

我想让那个组件半透明(已经完成) 并在底层的东西上应用图形效果,例如模糊全部 该组件下的元素(但不是组件本身)。

我的做法可能是错误的:
我尝试从Graphics2D实例获取图形信息给我 在 paint(...)方法中,但它是空的,对吧?

1 个答案:

答案 0 :(得分:1)

问题:您的组件是顶级的(即,您想知道JFrame下桌面上的内容),还是只想知道组件下面的组件?

如果1),那么使用java.awt.Robot方法createScreenCapture(Rectangle)获取屏幕截图是一件简单的事情;在这种情况下,Rectangle应该是你的窗口界限。

如果2),那么如果你有对下面组件的引用,你可以利用paint(Graphics)不关心Graphics对象来自哪里的事实。您可以创建BufferedImage,调用createGraphics()(如果需要Graphics2D),并将结果传递给要捕获的组件的paint(Graphics)方法。
请注意,如果组件是容器,它也会绘制其子项;这可能是也可能不是你想要的。