-1

所以在我的java项目中,我为截图功能做了一些代码

现在这是我制作的代码

public void takeScreenshot() {
        try {
            Window window = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusedWindow();
            Point point = window.getLocationOnScreen();
            int x = (int)point.getX();
            int y = (int)point.getY();
            int w = window.getWidth();
            int h = window.getHeight();
            Robot robot = new Robot(window.getGraphicsConfiguration().getDevice());
            Rectangle captureSize = new Rectangle(x, y, w, h);
            java.awt.image.BufferedImage bufferedimage = robot.createScreenCapture(captureSize);
            int picNumber = random(100);
            String fileExtension = "The Iron Door";
            File file = new File((new StringBuilder()).append(SignLink.getCacheDirectory() + "Screenshots/" + fileExtension + " ").append(picNumber).append(".png").toString());
            ImageIO.write(bufferedimage, "png", file);
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

现在代码完美运行我已经将它设置为对热键执行操作现在我有两个问题

1)我将如何在它周围添加某种由我预先制作的边框,当用户截取屏幕截图时,它会将边框放在图像上

2)我将如何做到这一点,以便用户可以输入他们想要调用屏幕截图的名称

4

1 回答 1

3

我将如何做到这一点,以便用户可以输入他们想要调用屏幕截图的名称

看一眼JFileChooser

我如何在它周围添加某种由我预先制作的边框,当用户截取屏幕截图时,它会将边框放在图像上

这涉及更多一点,并且取决于您想要实现的目标。

首先创建一个BufferedImage与屏幕截图大小相同的新文件,并添加边框大小......

 BufferedImage img = new BufferedImage(bufferedimage.getWidth() + borderSize, bufferedimage.getWidth() + borderSize, BufferedImage.TYPE_INT_RGB);

Graphics从新环境中获取上下文BufferedImage...

Graphics2D g2d = img.createGraphics();

将屏幕截图绘制到它...

g2d.drawImage(bufferedimage, borderSize / 2, borderSize / 2, null);

绘制边框并处理图形上下文

g2d.dispose();

根据您想要实现的目标,您可以先绘制边框,然后再绘制图像,但这取决于您

于 2013-10-29T04:00:17.640 回答