我如何“读取”组件下方的图形信息 (比如说BufferedImage)?
我想让该组件半透明(已经完成)并对底层内容应用图形效果,例如模糊该组件下的所有元素(但不是组件本身)。
我的方法可能是错误的:我尝试从Paint(...)
方法
中提供给我的 Graphics2D 实例获取图形信息,但它是空的,对吗?
我如何“读取”组件下方的图形信息 (比如说BufferedImage)?
我想让该组件半透明(已经完成)并对底层内容应用图形效果,例如模糊该组件下的所有元素(但不是组件本身)。
我的方法可能是错误的:我尝试从Paint(...)
方法
中提供给我的 Graphics2D 实例获取图形信息,但它是空的,对吗?
问题:您的组件是顶层的(即,您想知道 JFrame 下的桌面上有什么),还是只想知道组件下方的组件?
java.awt.Robot
如果是1),那么用方法截屏就很简单了createScreenCapture(Rectangle)
;在这种情况下,Rectangle
应该是你的窗口边界。
如果是 2),那么如果你有一个对下面组件的引用,你可以利用paint(Graphics)
不关心Graphics
对象来自哪里的事实。您可以创建一个BufferedImage
,调用createGraphics()
(如果需要 a Graphics2D
),并将结果传递给paint(Graphics)
您要捕获的组件的方法。
注意,如果组件是一个容器,它也会绘制它的孩子;这可能是也可能不是你想要的。