使用Graphics2D缩放图像

时间:2013-05-04 14:26:24

标签: java graphics paint graphics2d paintcomponent

在我正在制作的游戏中,我希望能量增强是空投。我有一个箱子的图像,我想画得比我绘制的更大。然后我希望图像随着时间逐渐变小,以便它看起来像是从空中掉落。我已经制作了这个代码,我觉得应该可以使用,但出于某些原因它并没有。

if(power.getPowerUp()){
   double crateX = (int) power.getX();
   double crateY = (int) power.getY();
   Image crate = power.getCrate();
   int crateW = crate.getWidth(null) + 100;
   int crateH = crate.getHeight(null) + 100;
   if(crateW > 64){
      g2d.drawImage(
         power.getCrate(), (int) crateX, (int) crateY, crateW, crateH, this );
      crateX += .5;
      crateX += .5;
      crateW -= 1;
      crateH -= 1;
   }
   else {
      g2d.drawImage(
         power.getCrate(), (int) crateX, (int) crateY, crateW, crateH, this );
   }
}

我在paintComponent(Graphics g)内有这个方法,我用一个Thread来重绘图形。为什么它不起作用?是否与我使用其他类中的值有关?我怎样才能让它逐渐变小?

1 个答案:

答案 0 :(得分:0)

每次调用方法时,您都在重新创建crateWcrateH变量。然后该方法进入if或else块,它进入if块之后永远不会进入else(你想要的)。换句话说,下次调用该方法时,宽度和高度是相同的。