Java drawimage()裁剪原始图像

时间:2018-03-27 17:39:49

标签: java 2d platform

我开始用Java编程,我想制作一个小项目,这是一个带有基本输入的平台2D游戏。 我希望游戏能够根据玩家的监视器来扩展其分辨率,但为了做到这一点,我需要绘制游戏视图的大小调整版本。 主要的问题是,在我的游戏模型中,我使用绝对坐标将项目放置在游戏世界中,因此我不希望我的坐标在缩放版本中发生变化。 经过一些研究后,我决定使用BufferedImage和drawImage()方法扩展我的游戏。

当我尝试将我的背景从我的模型的坐标缩放到播放器的屏幕时,问题开始出现,背景图像被裁剪,我失去了背景的底部。

这是我尝试缩放图像的部分:

final private int modelX = 480;
final private int modelY = 560;

final private int screenX;
final private int screenY;

public class Board extends JPanel{

Board(){
    Dimension s = Toolkit.getDefaultToolkit().getScreenSize();
    this.screenX = s.getWidth/4;
    this.screenY = s.getHeigth/2;
}

public void paintComponent(Graphics g) {
    super.paintComponent(g);
    ImageIcon background = new ImageIcon("background.png");

  //I create a new bufferedImage, the size of my game model.

    BufferedImage canvas = new BufferedImage(modelX,modelY,BufferedImage.TYPE_INT_ARGB);
    Graphics canvasGraphics = buffer.getGraphics();

 //I fill the whole canvas with my  scaled background picture

  canvasGraphics.drawImage(background.getImage(),0,0,canvas.getWidth,canvas.getHeight,null)
    Graphics2D g2d = (Graphics2D) g;
//Finally, I fill my screen  with my canvas
    g2d.drawImage(canvas,0,0,screenX,screenY,null);

}

}

0 个答案:

没有答案