JavaTM 2 Platform
Standard Ed. 5.0

java.awt.image
类 IndexColorModel

java.lang.Object
  继承者 java.awt.image.ColorModel
      继承者 java.awt.image.IndexColorModel
所有已实现的接口:
Transparency

public class IndexColorModel
extends ColorModel

IndexColorModel 类是使用由单个采样所组成的像素值的 ColorModel 类,这些像素值是默认 sRGB 颜色空间中固定 colormap 中的索引。colormap 指定了对应于每个索引的红色、绿色、蓝色和可选的 alpha 分量。在 colormap 中,所有分量都以 8 位无符号整数值表示。某些构造方法允许调用方在 colormap 中指定“空洞”,方法是通过 BigInteger 对象中的位集指示哪些项是有效的,以及哪些项表示不可用的颜色。此颜色模型与 X11 PseudoColor 可视化模型类似。

某些构造方法还提供了为 colormap 中的每个像素指定 alpha 分量的方法,而其他构造方法则要么不提供这种方法,要么在某些情况中使用一个标志来指示 colormap 数据是否包含 alpha 值。如果未向构造方法提供 alpha 值,则为每个条目假定一个不透明的 alpha 分量 (alpha = 1.0)。无论为像素值提供或使用什么 alpha 分量,都可以提供一个指示该像素完全透明的可选的透明像素值。注意,IndexColorModel 对象 colormap 中的颜色分量永远不预乘 alpha 分量。

确定 IndexColorModel 对象透明度的方法如下:检查 colormap 中各颜色的 alpha 分量,并在考虑可选的 alpha 值和所有指定的透明索引后选择最具体的值。仅在 colormap 中的所有有效颜色都为不透明,并且不存在有效的透明像素时,透明度值才是 Transparency.OPAQUE。如果 colormap 中的所有有效颜色要么是完全不透明的 (alpha = 1.0),要么是完全透明的 (alpha = 0.0)(在指定了有效透明像素时常出现该情况),则透明值是 Transparency.BITMASK。否则该值是 Transparency.TRANSLUCENT,指示某个有效颜色具有 alpha 分量,该颜色既不是完全透明的,也不是完全不透明的 (0.0 < alpha < 1.0)。

如果 IndexColorModel 对象的透明值是 Transparency.OPAQUE,则 hasAlphagetNumComponents 方法(均继承自 ColorModel)分别返回 false 和 3。对于所有其他透明度值,hasAlpha 返回 true,而 getNumComponents 则返回 4。

由像素值表示的索引存储在传递给此类方法的像素表示形式的最低有效 n 位中,其中 n 是为特定 IndexColorModel 对象的构造方法所定义的像素大小;n 必须在 1 到 16(包括)之间。假定像素表示形式中的高位为零。对于那些使用 transferType 类型的基本数组像素表示形式的方法,该数组的长度总是一。支持的传输类型有 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT。因为单个 int 像素表示形式总是能够以一个 int 值表示此类使用的像素值,所以它对于此类的所有对象都是有效的。因此,使用此种表示形式的方法不会因无效的像素值而抛出 IllegalArgumentException

此类中的很多方法都声明为 final。这样做的原因是基础本机图形代码做出了有关布局和此类操作的假设,并且这些假设反映在标记为 final 的方法实现中。出于其他原因,用户可以子类化此类,但是无法重写或修改这些方法的行为。

另请参见:
ColorModel, ColorSpace, DataBuffer

字段摘要
 
从类 java.awt.image.ColorModel 继承的字段
pixel_bits, transferType
 
从接口 java.awt.Transparency 继承的字段
BITMASK, OPAQUE, TRANSLUCENT
 
构造方法摘要
IndexColorModel(int bits, int size, byte[] r, byte[] g, byte[] b)
          根据指定的红色、绿色和蓝色分量数组构造一个 IndexColorModel
IndexColorModel(int bits, int size, byte[] r, byte[] g, byte[] b, byte[] a)
          根据给定的红色、绿色、蓝色和 alpha 分量数组构造一个 IndexColorModel
IndexColorModel(int bits, int size, byte[] r, byte[] g, byte[] b, int trans)
          根据给定的红色、绿色和蓝色分量数组构造一个 IndexColorModel
IndexColorModel(int bits, int size, byte[] cmap, int start, boolean hasalpha)
          根据交叉存取红色、绿色、蓝色和可选 alpha 分量的单个数组构造一个 IndexColorModel
IndexColorModel(int bits, int size, byte[] cmap, int start, boolean hasalpha, int trans)
          根据交叉存取红色、绿色、蓝色和可选 alpha 分量的单个数组构造一个 IndexColorModel
IndexColorModel(int bits, int size, int[] cmap, int start, boolean hasalpha, int trans, int transferType)
          根据一个 int 数组构造一个 IndexColorModel,该数组中的每个 int 值都是由默认 RGB 颜色模型格式的红色、绿色、蓝色和可选 alpha 分量构成。
IndexColorModel(int bits, int size, int[] cmap, int start, int transferType, BigInteger validBits)
          根据一个 int 数组构造一个 IndexColorModel,该数组中的每个 int 值都是由默认 RGB 颜色模型格式的红色、绿色、蓝色和 alpha 分量构成。
 
方法摘要
 BufferedImage convertToIntDiscrete(Raster raster, boolean forceARGB)
          返回一个 TYPE_INT_ARGB 或 TYPE_INT_RGB 的新 BufferedImage,其 Raster 的像素数据是通过使用此 ColorModel 的颜色/alpha 分量数组扩展源 Raster 中的各索引来计算的。
 SampleModel createCompatibleSampleModel(int w, int h)
          创建一个具有指定宽度和高度、数据布局与此 ColorModel 兼容的 SampleModel
 WritableRaster createCompatibleWritableRaster(int w, int h)
          创建一个具有指定宽度和高度、数据布局 (SampleModel) 与此 ColorModel 兼容的 WritableRaster
 void finalize()
          一旦不再引用此 ColorModel,则释放与此 ColorModel 关联的系统资源。
 int getAlpha(int pixel)
          返回指定像素的 alpha 分量,该值为 0 到 255。
 void getAlphas(byte[] a)
          将 alpha 透明度分量数组复制到指定的数组中。
 int getBlue(int pixel)
          返回指定像素的蓝色分量,在默认的 RGB ColorSpace (sRGB) 中为 0 到 255。
 void getBlues(byte[] b)
          将蓝色分量数组复制到指定的数组中。
 int[] getComponents(int pixel, int[] components, int offset)
          返回此 ColorModel 中指定像素的非标准化颜色/alpha 分量数组。
 int[] getComponents(Object pixel, int[] components, int offset)
          返回此 ColorModel 中指定像素的非标准化颜色/alpha 分量数组。
 int[] getComponentSize()
          返回包含各个颜色/alpha 分量位数的数组。
 int getDataElement(int[] components, int offset)
          在给定非标准化颜色/alpha 分量数组的情况下,以 int 的形式返回此 ColorModel 中的像素值。
 Object getDataElements(int[] components, int offset, Object pixel)
          在给定非标准化颜色/alpha 分量数组的情况下,返回表示此 ColorModel 中像素的数据元素数组。
 Object getDataElements(int rgb, Object pixel)
          根据默认 RGB 颜色模型中的整数像素表示形式,返回此 ColorModel 中像素的数据元素数组表示形式。
 int getGreen(int pixel)
          返回指定像素的绿色分量,在默认的 RGB ColorSpace (sRGB) 中为 0 到 255。
 void getGreens(byte[] g)
          将绿色分量数组复制到指定的数组中。
 int getMapSize()
          返回此 IndexColorModel 中颜色/alpha 分量数组的大小。
 int getRed(int pixel)
          返回指定像素的红色分量,在默认的 RGB ColorSpace (sRGB) 中为 0 到 255。
 void getReds(byte[] r)
          将红色分量数组复制到指定的数组中。
 int getRGB(int pixel)
          以默认 RGB 颜色模型格式返回像素的颜色/alpha 分量。
 void getRGBs(int[] rgb)
          将颜色和 alpha 分量数组中每个索引的数据转换成默认 RGB ColorModel 格式的 int 值,并将得到的 32 位 ARGB 值复制到指定数组中。
 int getTransparency()
          返回透明度。
 int getTransparentPixel()
          返回此 IndexColorModel 中透明像素的索引,如果没有 alpha 值为 0 的像素,则返回 -1。
 BigInteger getValidPixels()
          返回一个指示 colormap 中有效/无效像素的 BigInteger
 boolean isCompatibleRaster(Raster raster)
          如果 raster 与此 ColorModel 兼容,则返回 true;如果不与此 ColorModel 兼容,则返回 false
 boolean isCompatibleSampleModel(SampleModel sm)
          检查指定的 SampleModel 是否与此 ColorModel 兼容。
 boolean isValid()
          返回所有像素是否有效。
 boolean isValid(int pixel)
          返回像素是否有效。
 String toString()
          返回此 ColorModel 对象内容的 String 表示形式。
 
从类 java.awt.image.ColorModel 继承的方法
coerceData, equals, getAlpha, getAlphaRaster, getBlue, getColorSpace, getComponentSize, getDataElement, getDataElements, getGreen, getNormalizedComponents, getNormalizedComponents, getNumColorComponents, getNumComponents, getPixelSize, getRed, getRGB, getRGBdefault, getTransferType, getUnnormalizedComponents, hasAlpha, hashCode, isAlphaPremultiplied
 
从类 java.lang.Object 继承的方法
clone, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

IndexColorModel

public IndexColorModel(int bits,
                       int size,
                       byte[] r,
                       byte[] g,
                       byte[] b)
根据指定的红色、绿色和蓝色分量数组构造一个 IndexColorModel。此颜色模型所描述的像素都具有非标准化的 255(标准化是 1.0)alpha 分量,这意味着这些像素是完全不透明的。所有指定颜色分量的数组都必须至少具有指定的条目数。ColorSpace 是默认的 sRGB 空间。由于此构造方法的所有参数中都没有 alpha 信息,所以透明度值总是为 Transparency.OPAQUE。传输类型是 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT 中能够保存单个像素的最小值。

参数:
bits - 每个像素占用的位数
size - 颜色分量数组的大小
r - 红色分量数组
g - 绿色分量数组
b - 蓝色分量数组
抛出:
IllegalArgumentException - 如果 bits 小于 1 或大于 16
IllegalArgumentException - 如果 size 小于 1

IndexColorModel

public IndexColorModel(int bits,
                       int size,
                       byte[] r,
                       byte[] g,
                       byte[] b,
                       int trans)
根据给定的红色、绿色和蓝色分量数组构造一个 IndexColorModel。此颜色模型所描述的像素都具有非标准化的 255(标准化是 1.0)alpha 分量,这意味着这些像素是完全不透明的,但指示呈现为透明的像素除外。所有指定颜色分量的数组都必须至少具有指定的条目数。ColorSpace 是默认的 sRGB 空间。根据参数的不同,透明度值可能是 Transparency.OPAQUETransparency.BITMASK,正如上面类描述中所指定的。传输类型是能够保存单个像素的 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT 的最小值。

参数:
bits - 每个像素占用的位数
size - 颜色分量数组的大小
r - 红色分量数组
g - 绿色分量数组
b - 蓝色分量数组
trans - 透明像素的索引
抛出:
IllegalArgumentException - 如果 bits 小于 1 或大于 16
IllegalArgumentException - 如果 size 小于 1

IndexColorModel

public IndexColorModel(int bits,
                       int size,
                       byte[] r,
                       byte[] g,
                       byte[] b,
                       byte[] a)
根据给定的红色、绿色、蓝色和 alpha 分量数组构造一个 IndexColorModel。所有指定分量的数组都必须至少具有指定的条目数。ColorSpace 是默认的 sRGB 空间。根据参数的不同,透明度值可能是 Transparency.OPAQUETransparency.BITMASKTransparency.TRANSLUCENT,正如上面类描述中所指定的。传输类型是能够保存单个像素的 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT 的最小值。

参数:
bits - 每个像素占用的位数
size - 颜色分量数组的大小
r - 红色分量数组
g - 绿色分量数组
b - 蓝色分量数组
a - alpha 值分量数组
抛出:
IllegalArgumentException - 如果 bits 小于 1 或大于 16
IllegalArgumentException - 如果 size 小于 1

IndexColorModel

public IndexColorModel(int bits,
                       int size,
                       byte[] cmap,
                       int start,
                       boolean hasalpha)
根据交叉存取红色、绿色、蓝色和可选 alpha 分量的单个数组构造一个 IndexColorModel。该数组中必须具有足够的值,以填充具有指定大小的所有所需分量数组。ColorSpace 是默认的 sRGB 空间。根据参数的不同,透明度值可能是 Transparency.OPAQUETransparency.BITMASKTransparency.TRANSLUCENT,正如上面类描述中所指定的。传输类型是能够保存单个像素的 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT 的最小值。

参数:
bits - 每个像素占用的位数
size - 颜色分量数组的大小
cmap - 颜色分量数组
start - 首个颜色分量的起始偏移量
hasalpha - 指示 cmap 数组中是否包含 alpha 值
抛出:
IllegalArgumentException - 如果 bits 小于 1 或大于 16
IllegalArgumentException - 如果 size 小于 1

IndexColorModel

public IndexColorModel(int bits,
                       int size,
                       byte[] cmap,
                       int start,
                       boolean hasalpha,
                       int trans)
根据交叉存取红色、绿色、蓝色和可选 alpha 分量的单个数组构造一个 IndexColorModel。指定的透明索引表示完全透明的像素,而无论为其指定的 alpha 值是什么。该数组中必须具有足够的值,以填充具有指定大小的所有所需分量数组。ColorSpace 是默认的 sRGB 空间。根据参数的不同,透明度值可能是 Transparency.OPAQUETransparency.BITMASKTransparency.TRANSLUCENT,正如上面类描述中所指定的。传输类型是能够保存单个像素的 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT 的最小值。

参数:
bits - 每个像素占用的位数
size - 颜色分量数组的大小
cmap - 颜色分量数组
start - 首个颜色分量的起始偏移量
hasalpha - 指示 cmap 数组中是否包含 alpha 值
trans - 完全透明像素的索引
抛出:
IllegalArgumentException - 如果 bits 小于 1 或大于 16
IllegalArgumentException - 如果 size 小于 1

IndexColorModel

public IndexColorModel(int bits,
                       int size,
                       int[] cmap,
                       int start,
                       boolean hasalpha,
                       int trans,
                       int transferType)
根据一个 int 数组构造一个 IndexColorModel,该数组中的每个 int 值都是由默认 RGB 颜色模型格式的红色、绿色、蓝色和可选 alpha 分量构成。指定的透明索引表示完全透明的像素,而无论为其指定的 alpha 值是什么。该数组中必须具有足够的值,以填充具有指定大小的所有所需分量数组。ColorSpace 是默认的 sRGB 空间。根据参数的不同,透明度值可能是 Transparency.OPAQUETransparency.BITMASKTransparency.TRANSLUCENT,正如上面类描述中所指定的。

参数:
bits - 每个像素占用的位数
size - 颜色分量数组的大小
cmap - 颜色分量数组
start - 首个颜色分量的起始偏移量
hasalpha - 指示 cmap 数组中是否包含 alpha 值
trans - 完全透明像素的索引
transferType - 用于表示像素值的数组数据类型。该数据类型必须是 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT
抛出:
IllegalArgumentException - 如果 bits 小于 1 或大于 16
IllegalArgumentException - 如果 size 小于 1
IllegalArgumentException - 如果 transferType 不是 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT 之一

IndexColorModel

public IndexColorModel(int bits,
                       int size,
                       int[] cmap,
                       int start,
                       int transferType,
                       BigInteger validBits)
根据一个 int 数组构造一个 IndexColorModel,该数组中的每个 int 值都是由默认 RGB 颜色模型格式的红色、绿色、蓝色和 alpha 分量构成。该数组中必须具有足够的值,以填充具有指定大小的所有所需分量数组。ColorSpace 是默认的 sRGB 空间。根据参数的不同,透明度值可能是 Transparency.OPAQUETransparency.BITMASKTransparency.TRANSLUCENT,正如上面类描述中所指定的。该数据类型必须是 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT 之一。BigInteger 对象指定了 cmap 数组中的有效/无效像素。如果设置了某个索引处的 BigInteger 值,则该像素是有效的;如果未设置该索引处的 BigInteger 位,则该像素是无效的。

参数:
bits - 每个像素占用的位数
size - 颜色分量数组的大小
cmap - 颜色分量数组
start - 首个颜色分量的起始偏移量
transferType - 指定的数据类型
validBits - 一个 BigInteger 对象。如果设置了 BigInteger 中的某个位,则该索引处的像素是有效的。如果未设置该位,则认为该索引处的像素无效。如果为 null,则所有像素都是有效的。仅考虑从 0 到 colormap 大小的所有位。
抛出:
IllegalArgumentException - 如果 bits 小于 1 或大于 16
IllegalArgumentException - 如果 size 小于 1
IllegalArgumentException - 如果 transferType 不是 DataBuffer.TYPE_BYTEDataBuffer.TYPE_USHORT 之一
方法详细信息

getTransparency

public int getTransparency()
返回透明度。返回 OPAQUE、BITMASK 或 TRANSLUCENT

指定者:
接口 Transparency 中的 getTransparency
覆盖:
ColorModel 中的 getTransparency
返回:
IndexColorModel 的透明度值
另请参见:
Transparency.OPAQUE, Transparency.BITMASK, Transparency.TRANSLUCENT

getComponentSize

public int[] getComponentSize()
返回包含各个颜色/alpha 分量位数的数组。该数组包含颜色分量的顺序是红色、绿色、蓝色,后跟 alpha 分量(如果存在)。

覆盖:
ColorModel 中的 getComponentSize
返回:
包含此 IndexColorModel 的各个颜色和 alpha 分量位数的数组

getMapSize

public final int getMapSize()
返回此 IndexColorModel 中颜色/alpha 分量数组的大小。

返回:
颜色和 alpha 分量数组的大小。

getTransparentPixel

public final int getTransparentPixel()
返回此 IndexColorModel 中透明像素的索引,如果没有 alpha 值为 0 的像素,则返回 -1。如果通过像素的索引在某个构造方法中显式地指定了透明像素,则优先返回该像素,否则可能返回正好为完全透明的任意像素索引。

返回:
IndexColorModel 对象中透明像素的索引,如果没有这样的像素,则为 -1

getReds

public final void getReds(byte[] r)
将红色分量数组复制到指定的数组中。仅写入由 getMapSize 所指定的初始数组条目。

参数:
r - 指定的数组,红色分量数组元素要复制到该数组中

getGreens

public final void getGreens(byte[] g)
将绿色分量数组复制到指定的数组中。仅写入由 getMapSize 所指定的初始数组条目。

参数:
g - 指定的数组,绿色分量数组元素要复制到该数组中

getBlues

public final void getBlues(byte[] b)
将蓝色分量数组复制到指定的数组中。仅写入由 getMapSize 所指定的初始数组条目。

参数:
b - 指定的数组,蓝色分量数组元素要复制到该数组中

getAlphas

public final void getAlphas(byte[] a)
将 alpha 透明度分量数组复制到指定的数组中。仅写入由 getMapSize 所指定的初始数组条目。

参数:
a - 指定的数组,alpha 分量数组元素要复制到该数组中

getRGBs

public final void getRGBs(int[] rgb)
将颜色和 alpha 分量数组中每个索引的数据转换成默认 RGB ColorModel 格式的 int 值,并将得到的 32 位 ARGB 值复制到指定数组中。仅写入由 getMapSize 所指定的初始数组条目。

参数:
rgb - 指定的数组,从颜色和 alpha 分量数组转换得到的 ARGB 值要复制到该数组中。

getRed

public final int getRed(int pixel)
返回指定像素的红色分量,在默认的 RGB ColorSpace (sRGB) 中为 0 到 255。该像素值指定为 int 值。返回值是一个非预乘的值。

指定者:
ColorModel 中的 getRed
参数:
pixel - 指定的像素
返回:
指定像素的红色分量值

getGreen

public final int getGreen(int pixel)
返回指定像素的绿色分量,在默认的 RGB ColorSpace (sRGB) 中为 0 到 255。该像素值指定为 int 值。返回值是一个非预乘的值。

指定者:
ColorModel 中的 getGreen
参数:
pixel - 指定的像素
返回:
指定像素的绿色分量值

getBlue

public final int getBlue(int pixel)
返回指定像素的蓝色分量,在默认的 RGB ColorSpace (sRGB) 中为 0 到 255。该像素值指定为 int 值。返回值是一个非预乘的值。

指定者:
ColorModel 中的 getBlue
参数:
pixel - 指定的像素
返回:
指定像素的蓝色分量值

getAlpha

public final int getAlpha(int pixel)
返回指定像素的 alpha 分量,该值为 0 到 255。该像素值指定为 int 值。

指定者:
ColorModel 中的 getAlpha
参数:
pixel - 指定的像素
返回:
指定像素的 alpha 分量值

getRGB

public final int getRGB(int pixel)
以默认 RGB 颜色模型格式返回像素的颜色/alpha 分量。该像素值指定为 int 值。返回值是一个非预乘格式的值。

覆盖:
ColorModel 中的 getRGB
参数:
pixel - 指定的像素
返回:
指定像素的颜色和 alpha 分量
另请参见:
ColorModel.getRGBdefault()

getDataElements

public Object getDataElements(int rgb,
                              Object pixel)
根据默认 RGB 颜色模型中的整数像素表示形式,返回此 ColorModel 中像素的数据元素数组表示形式。然后可将此数组传递到 WritableRaster 对象的 setDataElements 方法。如果 pixel 变量为 null,则分配一个新数组。如果 pixel 不为 null,则它必须是一个 transferType 类型的基本数组;否则抛出 ClassCastException。如果 pixel 不足以保存此 ColorModel 的一个像素值,则抛出 ArrayIndexOutOfBoundsException。返回 pixel 数组。

因为可以子类化 IndexColorModel,所以子类继承此方法的实现,并且如果不重写子类,则在使用不受支持的 transferType 时会抛出异常。

覆盖:
ColorModel 中的 getDataElements
参数:
rgb - 默认 RGB 颜色模型中的整数像素表示形式
pixel - 指定的像素
返回:
表示此 IndexColorModel 中指定像素的数组。
抛出:
ClassCastException - 如果 pixel 不是 transferType 类型的基本数组
ArrayIndexOutOfBoundsException - 如果 pixel 不足以保存此 ColorModel 中的一个像素值
UnsupportedOperationException - 如果 transferType 无效
另请参见:
WritableRaster.setDataElements(int, int, java.lang.Object), SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)

getComponents

public int[] getComponents(int pixel,
                           int[] components,
                           int offset)
返回此 ColorModel 中指定像素的非标准化颜色/alpha 分量数组。该像素值指定为 int 值。如果 components 数组为 null,则分配一个包含 offset + getNumComponents() 个元素的新数组。返回 components 数组(仅在 hasAlpha 返回 true 时,该数组才包括 alpha 分量)。即使从 offset 开始的 components 数组是由此方法所分配的,颜色/alpha 分量也存储在该数组中。如果 components 数组不为 null 并且不足以保存从 offset 处开始的所有颜色和 alpha 分量,则抛出 ArrayIndexOutOfBoundsException

覆盖:
ColorModel 中的 getComponents
参数:
pixel - 指定的像素
components - 接收指定像素的颜色和 alpha 分量的数组
offset - components 数组中的偏移量,从此处开始存储颜色和 alpha 分量
返回:
包含从指定偏移量处开始的指定像素的颜色和 alpha 分量的数组。
另请参见:
ColorModel.hasAlpha(), ColorModel.getNumComponents()

getComponents

public int[] getComponents(Object pixel,
                           int[] components,
                           int offset)
返回此 ColorModel 中指定像素的非标准化颜色/alpha 分量数组。像素值由作为一个对象引用而传入的 transferType 类型的数据元素数组指定。如果 pixel 不是 transferType 类型的基本数组,则抛出 ClassCastException。如果 pixel 不足以保存此 ColorModel 的一个像素值,则抛出 ArrayIndexOutOfBoundsException。如果 components 数组为 null,则分配一个包含 offset + getNumComponents() 个元素的新数组。返回 components 数组(仅在 hasAlpha 返回 true 时,该数组才包括 alpha 分量)。即使从 offset 开始的 components 数组是由此方法所分配的,颜色/alpha 分量也存储在该数组中。如果 components 数组不为 null 并且不足以保存从 offset 处开始的所有颜色和 alpha 分量,则抛出 ArrayIndexOutOfBoundsException

因为可以子类化 IndexColorModel,所以子类继承此方法的实现,并且如果不重写子类,则在使用不受支持的 transferType 时会抛出异常。

覆盖:
ColorModel 中的 getComponents
参数:
pixel - 指定的像素
components - 接收指定像素的颜色和 alpha 分量的数组
offset - components 数组中的索引,从此处开始存储指定像素的颜色和 alpha 分量
返回:
从指定偏移量处开始包含指定像素的颜色和 alpha 分量的数组。
抛出:
ArrayIndexOutOfBoundsException - 如果 pixel 不足以保存此 ColorModel 的一个像素值,或者 components 数组不为 null 并且不足以保存从 offset 处开始的所有颜色和 alpha 分量
ClassCastException - 如果 pixel 不是 transferType 类型的基本数组
UnsupportedOperationException - 如果 transferType 不是某个受支持的传送类型
另请参见:
ColorModel.hasAlpha(), ColorModel.getNumComponents()

getDataElement

public int getDataElement(int[] components,
                          int offset)
在给定非标准化颜色/alpha 分量数组的情况下,以 int 的形式返回此 ColorModel 中的像素值。如果 components 数组不足以保存从 offset 处开始的所有颜色和 alpha 分量,则抛出 ArrayIndexOutOfBoundsException。因为可以子类化 ColorModel,所以子类继承此方法的实现,并且如果不重写子类,则在使用不受支持的 transferType 时会抛出异常。

覆盖:
ColorModel 中的 getDataElement
参数:
components - 非标准化颜色和 alpha 分量的数组
offset - components 数组中的索引,从此处开始检索颜色和 alpha 分量
返回:
对应于指定分量的此 ColorModel 中的 int 像素值。
抛出:
ArrayIndexOutOfBoundsException - 如果 components 数组不足以保存从 offset 处开始的所有颜色和 alpha 分量
UnsupportedOperationException - 如果 transferType 无效

getDataElements

public Object getDataElements(int[] components,
                              int offset,
                              Object pixel)
在给定非标准化颜色/alpha 分量数组的情况下,返回表示此 ColorModel 中像素的数据元素数组。然后可将此数组传递到 WritableRaster 对象的 setDataElements 方法。如果 components 数组不足以保存从 offset 处开始的所有颜色和 alpha 分量,则抛出 ArrayIndexOutOfBoundsException。如果 pixel 变量为 null,则分配一个新数组。如果 pixel 不为 null,则它必须是一个 transferType 类型的基本数组;否则抛出 ClassCastException。如果 pixel 不足以保存此 ColorModel 的一个像素值,则抛出 ArrayIndexOutOfBoundsException

因为可以子类化 IndexColorModel,所以子类继承此方法的实现,并且如果不重写子类,则在使用不受支持的 transferType 时会抛出异常。

覆盖:
ColorModel 中的 getDataElements
参数:
components - 非标准化颜色和 alpha 分量的数组
offset - components 中的索引,从此处开始检索颜色和 alpha 分量
pixel - 表示颜色和 alpha 分量数组的 Object
返回:
一个表示颜色和 alpha 分量数组的 Object
抛出:
ClassCastException - 如果 pixel 不是 transferType 类型的基本数组
ArrayIndexOutOfBoundsException - 如果 pixel 不足以保存此 ColorModel 的一个像素值,或者 components 不足以保存从 offset 处开始的所有颜色和 alpha 分量
UnsupportedOperationException - 如果 transferType 不是受支持的传输类型之一
另请参见:
WritableRaster.setDataElements(int, int, java.lang.Object), SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)

createCompatibleWritableRaster

public WritableRaster createCompatibleWritableRaster(int w,
                                                     int h)
创建一个具有指定宽度和高度、数据布局 (SampleModel) 与此 ColorModel 兼容的 WritableRaster。此方法仅对每个像素使用 16 或更少位的颜色模型有效。

因为可以子类化 IndexColorModel,所以任何支持每像素使用多于 16 位的子类必须重写此方法。

覆盖:
ColorModel 中的 createCompatibleWritableRaster
参数:
w - 应用于新 WritableRaster 的宽度
h - 应用于新 WritableRaster 的高度
返回:
具有指定宽度和高度的 WritableRaster 对象。
抛出:
UnsupportedOperationException - 如果像素中的位数大于 16
另请参见:
WritableRaster, SampleModel

isCompatibleRaster

public boolean isCompatibleRaster(Raster raster)
如果 raster 与此 ColorModel 兼容,则返回 true;如果不与此 ColorModel 兼容,则返回 false

覆盖:
ColorModel 中的 isCompatibleRaster
参数:
raster - 要测试兼容性的 Raster 对象
返回:
如果 raster 与此 ColorModel 兼容,则返回 true;否则返回 false

createCompatibleSampleModel

public SampleModel createCompatibleSampleModel(int w,
                                               int h)
创建一个具有指定宽度和高度、数据布局与此 ColorModel 兼容的 SampleModel

覆盖:
ColorModel 中的 createCompatibleSampleModel
参数:
w - 应用于新 SampleModel 的宽度
h - 应用于新 SampleModel 的高度
返回:
具有指定宽度和高度的 SampleModel 对象。
抛出:
IllegalArgumentException - 如果 wh 小于 0
另请参见:
SampleModel

isCompatibleSampleModel

public boolean isCompatibleSampleModel(SampleModel sm)
检查指定的 SampleModel 是否与此 ColorModel 兼容。如果 smnull,则此方法返回 false

覆盖:
ColorModel 中的 isCompatibleSampleModel
参数:
sm - 指定的 SampleModel,或者为 null
返回:
如果指定的 SampleModel 与此 ColorModel 兼容,则返回 true;否则返回 false
另请参见:
SampleModel

convertToIntDiscrete

public BufferedImage convertToIntDiscrete(Raster raster,
                                          boolean forceARGB)
返回一个 TYPE_INT_ARGB 或 TYPE_INT_RGB 的新 BufferedImage,其 Raster 的像素数据是通过使用此 ColorModel 的颜色/alpha 分量数组扩展源 Raster 中的各索引来计算的。如果 forceARGBtrue,则无论此 ColorModel 是否有 alpha 分量数组或透明像素,都返回一幅 TYPE_INT_ARGB 图像。

参数:
raster - 指定的 Raster
forceARGB - 如果为 true,则返回的 BufferedImage 是 TYPE_INT_ARGB;否则是 TYPE_INT_RGB
返回:
使用指定 Raster 创建的 Raster
抛出:
IllegalArgumentException - 如果 raster 参数与此 IndexColorModel 不兼容

isValid

public boolean isValid(int pixel)
返回像素是否有效。

参数:
pixel - 指定的像素值
返回:
如果 pixel 有效,则返回 true;否则返回 false

isValid

public boolean isValid()
返回所有像素是否有效。

返回:
如果所有像素都有效,则返回 true;否则返回 false

getValidPixels

public BigInteger getValidPixels()
返回一个指示 colormap 中有效/无效像素的 BigInteger。如果设置了某个位索引处的 BigInteger 值,则该位是有效的;如果未设置该索引处的 BigInteger 值,则该位是无效的。BigInteger 中惟一有效的查询范围是 0 到 colormap 的大小。

返回:
一个指示有效/无效像素的 BigInteger

finalize

public void finalize()
一旦不再引用此 ColorModel,则释放与此 ColorModel 关联的系统资源。

覆盖:
ColorModel 中的 finalize

toString

public String toString()
返回此 ColorModel 对象内容的 String 表示形式。

覆盖:
ColorModel 中的 toString
返回:
表示此 ColorModel 对象内容的 String

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策