我正在尝试创建不可见的AWT组件的图像(屏幕快照)。我无法使用Robot
类的屏幕捕获功能,因为该组件在屏幕上不可见。尝试使用以下代码:
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
component.paintAll(g);
有时可以使用,但是如果该组件包含诸如文本框或按钮之类的东西,或者某种OpenGL /
3D组件(这些东西不在图像中!),则不起作用。如何拍摄整个画面的适当截图?
很好的问题,我自己不时考虑这个问题!
正如您已经写过的,将重量级组件(例如3D和AWT)放到图像上是一个大问题。这些组件(几乎)被 直接转移到图形卡上,
因此不能使用常规的paintComponent
东西将它们重新渲染为图像,您需要操作系统的帮助或自行绘制这些组件。
对于没有to图像渲染方法的每个组件,您需要创建自己的组件。例如,使用jogl可以使用此方法进行屏幕外截图(SOpost)。
先决条件:
然后,您可以使用Xvfb将整个程序呈现到虚拟屏幕上,然后从该虚拟屏幕上截取屏幕截图,如下所示:
Xvfb :1 &
DISPLAY=:1 java YourMainClass
xwd -display :1 -root -out image.xwd
也许您需要通过将要渲染的程序的大小传递给Xvfb来进行一些操作(-screen 0 1024x768x24
)。
主要内容:什么是AWT 图形组件,常用的AWT 图形组件什么是AWT 图形组件 Graphics 图形控件允许应用程序在组件或图像上绘制。 常用的AWT 图形组件 图形组件 描述 Graphics 它是所有图形上下文的顶级抽象类。 Graphics2D 它是 Graphics 类的子类,提供对几何、坐标变换、颜色管理和文本布局的更复杂的控制。 Arc2D Arc2D 是存储由框架矩形、起始角度、角度范围(弧的长度)和闭合类型(OPEN、CHORD 或
作为程序的一部分,我需要显示属于一个文件夹(JPG文件)的图像。为此,我有以下代码: 如果我在移动文件管理器中浏览该文件,并打开该文件,它是正确的显示,所以,图像格式没有问题。此外,该图像是用相机拍摄的,与其他正确解码的图像相同。 如何解决这个问题,或者,有没有替代的方法来做到这一点?
我想创建一个包含XFA数据的PDF,但我不想在查看PDF时看到XFA数据,但是,我希望可以通过以下代码访问它: 我怎么能这样呢? 谢谢
我是个新手,在理解组件的生命周期时遇到了一些困难。 我现在有一个导航栏和导航按钮组件,我希望每个导航按钮触发不同的东西。我不想更改页面,我想在同一页面中显示更多组件。 我有我的按钮设置,所以我可以做下面的。 在这种情况下,我是否可以说,在DOM的其他地方创建/显示不同的组件?
我正在使用Jetpack Compose开发Android应用程序。该应用程序显示项目列表。它还有一个包含搜索栏的顶部栏。 我们有3个组件:项目列表、搜索栏组件和应用程序栏(应用程序栏包含搜索栏)。 相同的 ViewModel 类注入到可组合列表和可组合搜索栏(使用 Hilt)中。视图模型具有以下项列表:
主要内容:AWT 组件的介绍,AWT Component类构造方法,AWT UI组件列表AWT 组件的介绍 每个组件都考虑以下三个主要方面: UI 元素:它们是用户最终看到并与之交互的核心视觉元素。GWT 提供了大量广泛使用和常见的元素,从基本到复杂,我们将在本教程中介绍。 Layout布局:它们定义了 UI 元素应该如何在屏幕上组织,并为 GUI(图形用户界面)提供最终的外观和感觉。这部分将在布局一章中介绍。 事件行为:这些是用户与 UI 元素交互时发生的事件。这部分将在事件处理章