Java,启动低于面板的屏幕截图

Java,启动低于面板的屏幕截图,java,swing,panel,screenshot,Java,Swing,Panel,Screenshot,因此,我试图得到一个屏幕截图我的面板和下面的代码做得很完美。我想把屏幕截图的起点降低200像素。如果我做的是size.height-200,它会抬高底部。我将来需要这样做,但我如何降低顶部呢?还是我需要用另一种方法 System.out.println("Trying to screenshot"); Dimension size = getSize (); BufferedImage img = new Buffe

因此,我试图得到一个屏幕截图我的面板和下面的代码做得很完美。我想把屏幕截图的起点降低200像素。如果我做的是size.height-200,它会抬高底部。我将来需要这样做,但我如何降低顶部呢?还是我需要用另一种方法

System.out.println("Trying to screenshot");
                    Dimension size = getSize ();
                    BufferedImage img = new BufferedImage (size.width, size.height, BufferedImage.TYPE_3BYTE_BGR);
                    Graphics g = img.getGraphics ();
                    paint (g);
                    g.dispose ();
                    try
                    {
                        ImageIO.write (img, "png", new File ("screenshot1.png"));
                    }
                    catch (IOException ex)
                    {
                        ex.printStackTrace ();
                    }                   
你可以使用这个类。它允许您在创建面板图像时指定矩形

如果您不想使用该类,请查看代码。根据您的要求,关键是在绘制之前翻译图形。

您可以使用该类。它允许您在创建面板图像时指定矩形

如果您不想使用该类,请查看代码。根据您的要求,关键是在绘制之前翻译图形。

您可以使用该类。它允许您在创建面板图像时指定矩形

如果您不想使用该类,请查看代码。根据您的要求,关键是在绘制之前翻译图形。

您可以使用该类。它允许您在创建面板图像时指定矩形


如果您不想使用该类,请查看代码。根据您的要求,关键是在绘制之前转换图形。

是否要绘制具有偏移的组件?如果是,那么仿射翻译就是你的朋友。试着打电话

    Graphics2D g = img.createGraphics();
    g.transform(AffineTransform.getTranslateInstance(0, -200));
    paint(g);
    g.dispose();

是否要绘制具有偏移的零部件?如果是,那么仿射翻译就是你的朋友。试着打电话

    Graphics2D g = img.createGraphics();
    g.transform(AffineTransform.getTranslateInstance(0, -200));
    paint(g);
    g.dispose();

是否要绘制具有偏移的零部件?如果是,那么仿射翻译就是你的朋友。试着打电话

    Graphics2D g = img.createGraphics();
    g.transform(AffineTransform.getTranslateInstance(0, -200));
    paint(g);
    g.dispose();

是否要绘制具有偏移的零部件?如果是,那么仿射翻译就是你的朋友。试着打电话

    Graphics2D g = img.createGraphics();
    g.transform(AffineTransform.getTranslateInstance(0, -200));
    paint(g);
    g.dispose();

它说我必须向“g”添加一个cast,但当我这样做时,只会出现另一个错误。对不起,我没有注意到您只有一个图形实例,而不是Graphics2D。通常情况下,最好使用后者,没有2D的图形是旧的和有限的。我更新了答案。您是否需要翻译+200以向下移动并将输出图像的高度降低200…它说我必须向“g”添加一个强制转换,但当我这样做时,只会出现另一个错误。对不起,我没有注意到您只有一个图形实例,而不是Graphics2D。通常情况下,最好使用后者,没有2D的图形是旧的和有限的。我更新了答案。您是否需要翻译+200以向下移动并将输出图像的高度降低200…它说我必须向“g”添加一个强制转换,但当我这样做时,只会出现另一个错误。对不起,我没有注意到您只有一个图形实例,而不是Graphics2D。通常情况下,最好使用后者,没有2D的图形是旧的和有限的。我更新了答案。您是否需要翻译+200以向下移动并将输出图像的高度降低200…它说我必须向“g”添加一个强制转换,但当我这样做时,只会出现另一个错误。对不起,我没有注意到您只有一个图形实例,而不是Graphics2D。通常情况下,最好使用后者,没有2D的图形是旧的和有限的。我更新了答案。您是否需要翻译+200以向下移动并将输出图像的高度降低200…在尝试“捕获”组件时,不要直接使用
paint
,而是使用
printAll
,除此之外,它禁用双缓冲…在尝试“捕获”时,不要直接使用
paint
组件,而不是使用
printAll
,除其他外,它禁用双缓冲…在尝试“捕获”组件时不要直接使用
paint
,而是使用
printAll
,除其他外,它禁用双缓冲…在尝试“捕获”组件时不要直接使用
paint
,使用
printAll
,除其他外,它禁用双缓冲。。。