我正在建立一个随机的太阳能系统"模型(我在另一个问题中提到过)并且我试图放大屏幕的中心。这是我用来放大/缩小的代码:
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分别放大到窗口宽度和高度的一半。 ,但那也不起作用。