放大/缩小窗口中心

时间:2016-10-31 18:44:20

标签: java swing graphics zoom

我正在建立一个随机的太阳能系统"模型(我在另一个问题中提到过)并且我试图放大屏幕的中心。这是我用来放大/缩小的代码:

public void keyPressed(KeyEvent e) {
    if(e.getKeyCode() == KeyEvent.VK_PLUS){
        Camera.zoom++;
    }
    if(e.getKeyCode() == KeyEvent.VK_MINUS && Camera.zoom > 1){
        Camera.zoom--;
    }
}

这是我用来渲染行星,轨道和恒星的代码:

public void render(Graphics g){
    //Draw orbit
    g.setColor(Settings.ORBIT_COLOR);
    g.drawOval((star.x - orbitRadius - Camera.xOffset) * Camera.zoom, (star.y - orbitRadius - Camera.yOffset) * Camera.zoom, (orbitRadius * 2) * Camera.zoom, (orbitRadius * 2) * Camera.zoom);

    //Draw planet
    g.setColor(color);
    g.fillOval((x - radius - Camera.xOffset) * Camera.zoom, (y - radius - Camera.yOffset) * Camera.zoom, (radius * 2) * Camera.zoom, (radius * 2) * Camera.zoom);

    //Render star
    g.setColor(color);
    g.fillOval((x - radius - Camera.xOffset) * Camera.zoom, (y - radius - Camera.yOffset) * Camera.zoom, (radius * 2) * Camera.zoom, (radius * 2) * Camera.zoom);
}

int Camera.zoom = 1;

int Camera.xOffset / yOffset是我用来移动相机的方法。

我的问题是这段代码将相机放大到左上角,而不是中间,我尝试将x和y分别放大到窗口宽度和高度的一半。 ,但那也不起作用。

'Unzoomed'

Zoomed in

0 个答案:

没有答案