Module java.desktop
Package java.awt.image

Interface WritableRenderedImage

所有超接口:
RenderedImage
所有已知实现类:
BufferedImage

public interface WritableRenderedImage extends RenderedImage
WritableRenderedImage是一个常见的接口,用于包含或生成以栅格形式存在的图像数据的对象,并且可以被修改和/或覆盖写入。图像数据可以存储/生成为单个瓦片或瓦片的常规数组。

WritableRenderedImage在将瓦片检出以进行写入(通过getWritableTile方法)时向其他感兴趣的对象提供通知,并在特定瓦片的最后一个写入者放弃访问时(通过调用releaseWritableTile)提供通知。此外,它允许任何调用者确定当前是否有任何瓦片被检出(通过hasTileWriters),并获取这些瓦片的列表(通过getWritableTileIndices,以Vector形式的Point对象列表)。

希望被通知瓦片可写性更改的对象必须实现TileObserver接口,并通过调用addTileObserver添加。对于同一对象的多次调用addTileObserver将导致多次通知。现有观察者可以通过调用removeTileObserver减少其通知;如果观察者没有通知,则操作不会执行任何操作。

WritableRenderedImage需要确保只有在第一个写入者获取瓦片并最后一个写入者释放瓦片时才发生通知。

  • Method Details

    • addTileObserver

      void addTileObserver(TileObserver to)
      添加观察者。如果观察者已存在,则将接收多次通知。
      参数:
      to - 指定的TileObserver
    • removeTileObserver

      void removeTileObserver(TileObserver to)
      移除观察者。如果观察者未注册,则不会发生任何操作。如果观察者已注册以接收多次通知,则现在将减少一个注册。
      参数:
      to - 指定的TileObserver
    • getWritableTile

      WritableRaster getWritableTile(int tileX, int tileY)
      检出一个瓦片以进行写入。WritableRenderedImage负责在瓦片从没有写入者到有一个写入者时通知其所有TileObservers。
      参数:
      tileX - 瓦片的X索引。
      tileY - 瓦片的Y索引。
      返回:
      一个可写入的瓦片。
    • releaseWritableTile

      void releaseWritableTile(int tileX, int tileY)
      放弃对瓦片的写入权利。如果调用者继续写入瓦片,则结果是未定义的。对此方法的调用应该只出现在与getWritableTile的调用匹配的情况下;任何其他用途都将导致未定义的结果。WritableRenderedImage负责在瓦片从有一个写入者到没有写入者时通知其所有TileObservers。
      参数:
      tileX - 瓦片的X索引。
      tileY - 瓦片的Y索引。
    • isTileWritable

      boolean isTileWritable(int tileX, int tileY)
      返回当前是否有瓦片已被检出以进行写入。
      参数:
      tileX - 瓦片的X索引。
      tileY - 瓦片的Y索引。
      返回:
      如果指定的瓦片已被检出以进行写入,则返回true;否则返回false
    • getWritableTileIndices

      Point[] getWritableTileIndices()
      返回指示哪些瓦片已被检出以进行写入的Point对象数组。如果没有瓦片被检出,则返回null。
      返回:
      包含已被检出以进行写入的瓦片位置的数组。
    • hasTileWriters

      boolean hasTileWriters()
      返回当前是否有任何瓦片已被检出以进行写入。在语义上等同于(getWritableTileIndices() != null)。
      返回:
      如果有任何瓦片已被检出以进行写入,则返回true;否则返回false
    • setData

      void setData(Raster r)
      将图像的矩形设置为假定与WritableRenderedImage处于相同坐标空间中的Raster r的内容。操作将被剪切到WritableRenderedImage的边界。
      参数:
      r - 指定的Raster