【问题标题】:Java - Fullscreen and windowed modeJava - 全屏和窗口模式
【发布时间】:2014-08-16 05:12:50
【问题描述】:

是否有可能如果我在两种模式之间切换并绘制东西来调整它们,以便在窗口模式下绘制的东西看起来像在全屏模式下一样,但实际上更小......

这就是我的代码:

构造函数: GraphicsEnvironment gfxEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

GraphicsDevice gfxDevice = gfxEnvironment.getDefaultScreenDevice();

私有布尔全屏 = true; // 不是这样的

if(answer == JOptionPane.YES_OPTION) {

        setUndecorated(true);
        setAlwaysOnTop(true);
        DisplayMode getMode = gfxDevice.getDisplayMode();
        DisplayMode displayMode = new DisplayMode(getMode.getWidth(), getMode.getHeight(), getMode.getBitDepth(), getMode.getRefreshRate());
        gfxDevice.setFullScreenWindow(Frame.this);
        gfxDevice.setDisplayMode(displayMode);
        fullscreen = true;
    } else {
        setUndecorated(false);
        setVisible(true);
        setSize(800, 600);
        setLocationRelativeTo(null);
        setResizable(false);
        fullscreen = false;
    }

切换屏幕:if(fullscreen) {

        dispose();
        setUndecorated(false);
        gfxDevice.setFullScreenWindow(null);
        setSize(800, 600);
        setLocationRelativeTo(null);
        setVisible(true);
        fullscreen = false;
    } else {
        setVisible(false);
        dispose();
        setUndecorated(true);
        gfxDevice.setFullScreenWindow(Frame.this);
        fullscreen = true;
    }

draw: private void draw(Graphics g) {

    g.setColor(Color.RED);
    g.fillRect(0, 0, 400, 800);
}

那么我该如何调整矩形呢? 谢谢:)

【问题讨论】:

    标签: java jframe fullscreen draw windowed


    【解决方案1】:

    您可以根据屏幕尺寸绘制矩形。因此,使用java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().width;java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().height; 将其基于窗口宽度和高度的一小部分 而不是固定的像素值。

    【讨论】:

    • 如果我的全屏尺寸是 1600 和 900 并且我的窗口模式尺寸是 800 和 600,我该如何准确地绘制该矩形:(50, 30, 200, 350)? :)
    • 哦,我只是将矩形的 x 坐标和宽度除以 2,将 y - 坐标除以 1.5(我认为),所以我采用了该代码:float strechX = 1.0f, strechY = 1.0f; if(!fullscreen) { strechX = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().width / WIDTH; strechY = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().height / HEIGHT; } g.setColor(Color.RED); g.fillRect((int) (0.0f / strechX), (int) (0.0f / strechY), (int) (100.0f / strechX), (int) (200.0f / strechY));
    • 在评论中很难读懂,但它有效吗?如果是这样,那么干得好!始终将视图大小缩放到屏幕/窗口大小很重要。它使代码乏味,但产生一致的结果。
    猜你喜欢
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多