我怎样才能“读取”组件下的图形信息 (假设为 BufferedImage )?
我想让那个组件半透明(已经完成) 并在底层的东西上应用图形效果,例如模糊全部 该组件下的元素(但不是组件本身)。
我的做法可能是错误的:
我尝试从Graphics2D实例获取图形信息给我
在 paint(...)方法中,但它是空的,对吧?
答案 0 :(得分:1)
问题:您的组件是顶级的(即,您想知道JFrame下桌面上的内容),还是只想知道组件下面的组件?
如果1),那么使用java.awt.Robot
方法createScreenCapture(Rectangle)
获取屏幕截图是一件简单的事情;在这种情况下,Rectangle
应该是你的窗口界限。
如果2),那么如果你有对下面组件的引用,你可以利用paint(Graphics)
不关心Graphics
对象来自哪里的事实。您可以创建BufferedImage
,调用createGraphics()
(如果需要Graphics2D
),并将结果传递给要捕获的组件的paint(Graphics)
方法。
请注意,如果组件是容器,它也会绘制其子项;这可能是也可能不是你想要的。