2

我需要将 jpanel 的某个区域转换为 bufferedImage 或其他格式以显示在另一个 jpanel 中。

到目前为止,我只看到了将整个 jpanel 转换为 bufferedImage 的代码,但就我而言,我只需要 jpanel 内的一个区域。

谢谢

4

4 回答 4

2

创建一个具有请求大小的 BufferedImage 来接收图像。
获取一个用于在此图像上绘图的 Graphics2D,并让 JPanel 在其上绘图。

    JPanel panel = ...
    BufferedImage image = new BufferedImage(200, 200, TYPE_INT_ARGB);
    Graphics2D gg = image.createGraphics();
    try {
        gg.translate(-100, -20);  // start point of region negated
        panel.paint(gg);
    } finally {
        gg.dispose();
    }
于 2010-01-14T19:35:27.260 回答
2

由于您已经有将整个事物转换为 a 的代码BufferedImage,因此您可以使用它,然后调用getSubImage结果BufferedImage以获取子区域。

于 2010-01-14T18:18:09.990 回答
1

到目前为止,我只看到了将整个 jpanel 转换为 bufferedImage 的代码,但就我而言,我只需要 jpanel 内的一个区域。

然后拍摄该图像并将所需区域重新绘制为新图像,您就完成了。

于 2010-01-14T18:17:27.980 回答
0

最简单的可能是Robot.createScreenCapture()

您需要从面板的坐标系转换为屏幕坐标系。请参阅Component.getBounds()Component.getLocationOnScreen()

于 2010-01-14T18:17:17.247 回答