显示ImageIcon的一部分

时间:2014-03-18 21:29:27

标签: java swing jlabel imageicon

的Bonjour, 我正在尝试动画,并且发现自己在连续的单个图像上发现了一条爆炸。我希望他们按顺序依次显示爆炸动画。当然,我在ImageIcon上考虑JLabel,但当我查看JLabel规范时,我发现了这一行:

  

JLabel(Icon icon) - 使用指定的图像创建JLabel实例。标签在其显示区域中垂直和水平居中。

我希望能够仅在标签中显示完整图像的一部分,然后加载其中的一部分:基本上在一张图像上加载不同的阶段。

有没有办法在不切割图像并单独加载图像的情况下执行此操作?

3 个答案:

答案 0 :(得分:4)

您可load the image initially using a BufferedImage,您可以致电getSubimage获取Image的裁剪副本,同时保留原Image

答案 1 :(得分:2)

你也可以使用这个 drawImage方法从Graphics类到裁剪绘制图像

public abstract boolean drawImage(Image img,
                              int dx1,
                              int dy1,
                              int dx2,
                              int dy2,
                              int sx1,
                              int sy1,
                              int sx2,
                              int sy2,
                              ImageObserver observer)
  

绘制与当前可用的指定图像一样多的指定区域,即时缩放它以适合目标可绘制表面的指定区域。透明像素不会影响已存在的任何像素。

     

<强>参数:

     
      
  • img - 要绘制的指定图像。如果img为null,则此方法不执行任何操作。
  •   
  • dx1 - 目标矩形第一个角的x坐标。
  •   
  • dy1 - 目标矩形第一个角的y坐标。
  •   
  • dx2 - 目标矩形的第二个角的x坐标。
  •   
  • dy2 - 目标矩形的第二个角的y坐标。
  •   
  • sx1 - 源矩形第一个角的x坐标。
  •   
  • sy1 - 源矩形第一个角的y坐标。
  •   
  • sx2 - 源矩形第二个角的x坐标。
  •   
  • sy2 - 源矩形第二个角的y坐标。
  •   
  • 观察者 - 当更多图像被缩放和转换时要通知的对象。
  •   

查看使用单个动画精灵的示例here,以选择要绘制的图像的不同位置。

enter image description here

enter image description here

在20JAN15之前,示例程序指向了这个答案(用于创建上面爆炸的动画显示)有逻辑错误,只显示了2行图像。 (请注意,该示例未显示爆炸的最后一行...)

请参阅pointed to-page的其他答案,其中包含对该计划的修复程序。干杯。沃伦K。

答案 2 :(得分:1)

  1. 将标签添加到JScrollPane,并将滚动窗格的大小设置为单个图像的宽度。您可能还想删除滚动窗格的boder并确保滚动窗格不显示滚动条。

  2. 使用Swing Timer来安排动画。

  3. 每次定时器触发时,您都可以使用视口的setViewPosition方法更改滚动窗格的视口位置。