编程语言
首页 > 编程语言> > java-通过按Prt Scr按钮在LibGDX中制作屏幕截图

java-通过按Prt Scr按钮在LibGDX中制作屏幕截图

作者:互联网

通过在Stack Overflow上遵循this解决方案,我提出了以下Java类:

public final class Screenshot {

    private static byte[] pixels;
    private static Pixmap pixmap;

    public static void take() {
        pixels = ScreenUtils.getFrameBufferPixels(0, 0,
                Gdx.graphics.getBackBufferWidth(),
                Gdx.graphics.getBackBufferHeight(),
                true);

        pixmap = new Pixmap(Gdx.graphics.getBackBufferWidth(),
                Gdx.graphics.getBackBufferHeight(),
                Pixmap.Format.RGBA8888);

        BufferUtils.copy(pixels, 0, pixmap.getPixels(), pixels.length);
        PixmapIO.writePNG(Gdx.files.external("./screenshot_" + new Date().getTime() + ".png"), pixmap);

        pixmap.dispose();
        pixels = null;
    }
}

调用Screenshot().take()将获取LibGDX渲染缓冲区并将其转储到PNG文件中.正是我想要的.

我的问题是,是否有一种“捕获”打印屏幕按钮的好方法.我可以使用打印屏幕的按键代码吗?

解决方法:

似乎在LibGDX中您不能.

您检查键盘输入的方式是

    Gdx.input.isKeyPressed(key)

其中key是Keys类的对象,不包含prtscr按钮.

更重要的是-Keys对象是整数,因此我尝试通过检查来找出prtsrc的按钮代码:

    uiStage.addListener(new ClickListener()
    {
        @Override
        public boolean keyDown(InputEvent event, int keycode)
        {
            System.out.println(keycode);
            return true;
        }
    });

我的电脑上有0我已经通过打印检查了Keys类中的0

    System.out.println(Input.Keys.toString(42));

结果是未知.老实说,我很惊讶,但是LibGDX似乎不支持PRINT_SCREEN按钮.

可能有一种方法可以忽略LibGDX机制,并使用平台特定的功能来检查是否单击了prtsrc(互联网说它的ASCII码是44),但是LibGDX本身的答案似乎是-没有办法.

标签:printscreen,libgdx,java
来源: https://codeday.me/bug/20191119/2032842.html