java.awt.image

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

public class DirectColorModel
     
extends PackedColorModel

DirectColorModel 类是使用像素值的 ColorModel 类,像素值以单独样本的形式表示 RGB 颜色和 alpha 信息,并将单个像素的所有样本打包成单个 int、short 或 byte 量。此类只能与类型 ColorSpace.TYPE_RGB 的 ColorSpaces 一起使用。此外,对于 ColorSpace 的每个分量,通过 ColorSpace 的 getMinValue() 方法得到的最小标准化分量值必须是 0.0,通过 getMaxValue() 方法得到的最大值必须是 1.0(这些最小/最大值是 RGB 空间的常见值)。像素值中必须有三个颜色样本,且可以有一个 alpha 样本。对于那些使用类型 transferType 的基本数组像素表示形式的方法,数组长度总是 1。受支持的转换类型是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 和 DataBuffer.TYPE_INT。颜色和 alpha 样本以位为单位存储在位掩码指示的数组的单个元素中。每个位掩码必须是连续的,并且掩码一定不能重叠。相同的掩码可以应用于由其他方法使用的单个 int 像素表示形式。掩码和颜色/alpha 样本间的对应关系如下:

  • 如果 alpha 不存在,掩码则由运行 0 到 2 的索引标识,如果 alpha 存在,则由运行 3 的索引标识。
  • 前三个索引指的是颜色样本;索引 0 对应于红色,索引 1 对应于绿色,索引 2 对应于蓝色。
  • 索引 3 对应于 alpha 样本(如果存在)。

出于显示或处理的目的,像素值到颜色/alpha 分量的转换是从样本到分量一一对应的。DirectColorModel 通常与使用掩码定义打包样本的图像数据一起使用。例如,DirectColorModel 可以与 SinglePixelPackedSampleModel 一起使用来构造 BufferedImage。通常,SampleModelColorModel 使用的掩码是相同的。但是,如果掩码不相同,像素数据的颜色解释将根据 ColorModel 的掩码进行。

单个 int 像素表示形式对此类的所有对象都有效,因为它总是能够表示在单个 int 中与此类一起使用的像素值。因此,使用此表示形式的方法将不会因无效的像素值而抛出 IllegalArgumentException

此颜色模型类似于 X11 TrueColor 可视分量。由 getRGBdefault 方法指定的默认 RGB ColorModel 是一个具有以下参数的 DirectColorModel

位数:        32
红色掩码:0x00ff0000
绿色掩码:0x0000ff00
蓝色掩码:0x000000ff
Alpha 掩码:0xff000000
颜色空间:sRGB
isAlphaPremultiplied:False
透明度:Transparency.TRANSLUCENT
transferType:DataBuffer.TYPE_INT
 

此类中的许多方法都是 final。这是因为基础本机图形代码假定此类的布局和操作,并在此处标记 final 的方法实现中反映了这些假定。您可以出于其他原因将此类子类化,但不能重写或修改那些方法的行为。

另请参见:
ColorModel, ColorSpace, SinglePixelPackedSampleModel, BufferedImage, ColorModel.getRGBdefault()

字段摘要
 
从类 java.awt.image.ColorModel 继承的字段
pixel_bits, transferType
 
从接口 java.awt.Transparency 继承的字段
BITMASK, OPAQUE, TRANSLUCENT
 
构造方法摘要
DirectColorModel(ColorSpace space, int bits, int rmask, int gmask, int bmask, int amask, boolean isAlphaPremultiplied, int transferType)
          根据指定参数构造 DirectColorModel
DirectColorModel(int bits, int rmask, int gmask, int bmask)
          根据指定的指示 int 像素表示形式中哪些位包含红色、绿色和蓝色颜色样本的掩码构造 DirectColorModel
DirectColorModel(int bits, int rmask, int gmask, int bmask, int amask)
          根据指定的指示在 int 像素表示形式中哪些位包含红色、绿色和蓝色颜色样本与 alpha 样本(如果存在)的掩码构造 DirectColorModel
 
方法摘要
 ColorModel coerceData(WritableRaster raster, boolean isAlphaPremultiplied)
          强制光栅数据与在 isAlphaPremultiplied 变量中指定的状态匹配,假定此 ColorModel 现在已对该数据进行正确描述。
 WritableRaster createCompatibleWritableRaster(int w, int h)
          创建具有指定宽度和高度、拥有与此 ColorModel 兼容的数据布局 (SampleModel) 的 WritableRaster
 int getAlpha(int pixel)
          返回指定像素(缩放范围从 0 到 255)的 alpha 分量。
 int getAlpha(Object inData)
          返回指定像素(在 0 到 255 之间缩放)的 alpha 分量。
 int getAlphaMask()
          返回指示 int 像素表示形式中哪些位包含 alpha 分量的掩码。
 int getBlue(int pixel)
          返回指定像素的蓝色颜色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。
 int getBlue(Object inData)
          返回指定像素的蓝颜色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。
 int getBlueMask()
          返回指示 int 像素表示形式中哪些位包含蓝色颜色分量的掩码。
 int[] getComponents(int pixel, int[] components, int offset)
          返回在 ColorModel 中已给定像素的未标准化颜色/alpha 分量。
 int[] getComponents(Object pixel, int[] components, int offset)
          返回在 ColorModel 中已给定像素的未标准化颜色/alpha 分量。
 int getDataElement(int[] components, int offset)
          在给定未标准化颜色/alpha 分量的数组的情况下,返回以 int 类型表示在此 ColorModel 中的像素值。
 Object getDataElements(int[] components, int offset, Object obj)
          在给定未标准化的颜色/alpha 分量的数组的情况下,返回此 ColorModel 中的像素的数据元素数组表示形式。
 Object getDataElements(int rgb, Object pixel)
          在默认 RGB 颜色模型中给定整数像素的表示形式的情况下,返回此 ColorModel 中像素的数据元素数组的表示形式。
 int getGreen(int pixel)
          返回指定像素的绿色颜色分量,指定像素在默认 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。
 int getGreen(Object inData)
          返回指定像素的绿色颜色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。
 int getGreenMask()
          返回指示 int 像素表示形式中哪些位包含绿色颜色分量的掩码。
 int getRed(int pixel)
          返回指定像素的红色颜色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。
 int getRed(Object inData)
          返回指定像素的红色颜色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。
 int getRedMask()
          返回指定 int 像素表示形式中哪些位包含红色分量的掩码。
 int getRGB(int pixel)
          返回默认的 RGB 颜色模型格式中的像素的颜色/alpha 分量。
 int getRGB(Object inData)
          返回默认的 RGB 颜色模型格式中的像素的颜色/alpha 分量。
 boolean isCompatibleRaster(Raster raster)
          如果 raster 与此 ColorModel 兼容,则返回 true,如果不兼容,则返回 false
 String toString()
          返回表示此 DirectColorModelString
 
从类 java.awt.image.PackedColorModel 继承的方法
createCompatibleSampleModel, equals, getAlphaRaster, getMask, getMasks, isCompatibleSampleModel
 
从类 java.awt.image.ColorModel 继承的方法
finalize, getColorSpace, getComponentSize, getComponentSize, getDataElement, getDataElements, getNormalizedComponents, getNormalizedComponents, getNumColorComponents, getNumComponents, getPixelSize, getRGBdefault, getTransferType, getTransparency, getUnnormalizedComponents, hasAlpha, hashCode, isAlphaPremultiplied
 
从类 java.lang.Object 继承的方法
clone, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

DirectColorModel

public DirectColorModel(int bits,
                        int rmask,
                        int gmask,
                        int bmask)
根据指定的指示 int 像素表示形式中哪些位包含红色、绿色和蓝色颜色样本的掩码构造 DirectColorModel。因为像素值不包含 alpha 信息,所以所有像素都可视为不透明的,这意味着 alpha = 1.0。每个掩码中的所有位必须是连续的,并且符合 int 像素表示形式的最低有效位的指定数量。 ColorSpace 是默认的 sRGB 空间。透明度值为 Transparency.OPAQUE。转换类型是存储单个像素的 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT 中的最小者。

参数:
bits - 像素值中的位数量;例如,掩码中位的数量总和。
rmask - 指定指示整数像素中哪些位包含红色分量的掩码
gmask - 指定指示整数像素中哪些位包含绿色分量的掩码
bmask - 指定指示整数像素中哪些位包含蓝色分量的掩码

DirectColorModel

public DirectColorModel(int bits,
                        int rmask,
                        int gmask,
                        int bmask,
                        int amask)
根据指定的指示在 int 像素表示形式中哪些位包含红色、绿色和蓝色颜色样本与 alpha 样本(如果存在)的掩码构造 DirectColorModel。如果 amask 为 0,则像素值不包含 alpha 信息,且所有像素都可视为不透明的,这意味着 alpha = 1.0。每个掩码中的所有位必须是连续的,并且符合 int 像素表示形式的最低有效位的指定数量。Alpha(如果存在)不是预先乘得的值。 ColorSpace 是默认的 sRGB 空间。如果 alpha 不存在,则透明度值是 Transparency.OPAQUE,否则是 Transparency.TRANSLUCENT。转换类型是存储单个像素的 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT 中的最小者。

参数:
bits - 像素值中的位数量;例如,掩码中位的数量总和。
rmask - 指定指示整数像素中哪些位包含红色分量的掩码
gmask - 指定指示整数像素中哪些位包含绿色分量的掩码
bmask - 指定指示整数像素中哪些位包含蓝色分量的掩码
amask - 指定指示整数像素中哪些位包含 alpha 分量的掩码

DirectColorModel

public DirectColorModel(ColorSpace space,
                        int bits,
                        int rmask,
                        int gmask,
                        int bmask,
                        int amask,
                        boolean isAlphaPremultiplied,
                        int transferType)
根据指定参数构造 DirectColorModel。颜色分量位于指定的 ColorSpace,后者必须属于类型 ColorSpace.TYPE_RGB,并且必须具有都是 0.0 的最小标准化分量值和都是 1.0 的最大值。掩码指定在 int 像素表示形式中哪些位包含红色、绿色和蓝色颜色样本与 alpha 样本(如果存在)。如果 amask 为 0,则像素值不包含 alpha 信息,且所有像素都可视为不透明的,这意味着 alpha = 1.0。每个掩码中的所有位必须是连续的,并且符合 int 像素表示形式的最低有效位的指定数量。如果 alpha 存在,则 boolean isAlphaPremultiplied 指定如何解释像素值中的颜色和 alpha 样本。如果 booleantrue,则假定颜色样本已经乘以 alpha 样本。如果 alpha 不存在,则透明度值为 Transparency.OPAQUE,否则为 Transparency.TRANSLUCENT。转换类型是用来表示像素值的基本数组的类型,并且必须是 DataBuffer.TYPE_BYTE、DataBuffer.TYPE_USHORT 或 DataBuffer.TYPE_INT 之一。

参数:
space - 指定的 ColorSpace
bits - 像素值中位的数量;例如,掩码中位的数量和。
rmask - 指定指示整数像素中哪些位包含红色分量的掩码
gmask - 指定指示整数像素中哪些位包含绿色分量的掩码
bmask - 指定指示整数像素中哪些位包含蓝色分量的掩码
amask - 指定指示整数像素中哪些位包含 alpha 分量的掩码
isAlphaPremultiplied - true 如果将颜色样本预先乘以 alpha 样本;否则 false
transferType - 用来表示像素值的数组的类型
抛出:
IllegalArgumentException - 如果 space 不是 TYPE_RGB 空间,或如果最小/最大标准化分量值不是 0.0/1.0。
方法详细信息

getRedMask

public final int getRedMask()
返回指定 int 像素表示形式中哪些位包含红色分量的掩码。

返回:
指示 int 像素表示形式的哪些位包含红色颜色样本的掩码。

getGreenMask

public final int getGreenMask()
返回指示 int 像素表示形式中哪些位包含绿色颜色分量的掩码。

返回:
指示 int 像素表示形式的哪些位包含绿色颜色样本的掩码。

getBlueMask

public final int getBlueMask()
返回指示 int 像素表示形式中哪些位包含蓝色颜色分量的掩码。

返回:
指示 int 像素表示形式的哪些位包含蓝色颜色样本的掩码。

getAlphaMask

public final int getAlphaMask()
返回指示 int 像素表示形式中哪些位包含 alpha 分量的掩码。

返回:
指示 int 像素表示形式的哪些位包含 alpha 样本的掩码。

getRed

public final int getRed(int pixel)
返回指定像素的红色颜色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。将像素值指定为 int。返回的值是一个非预先乘得的值。因此,如果预乘 alpha,则此方法会在返回该值之前将其分离出来。例如,如果 alpha 值为 0,则红色值为 0。

指定者:
ColorModel 中的 getRed
参数:
pixel - 指定的像素
返回:
指定像素(在 sRGB ColorSpace 中缩放范围从 0 到 255)的红色颜色分量。

getGreen

public final int getGreen(int pixel)
返回指定像素的绿色颜色分量,指定像素在默认 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。将像素值指定为 int。返回的值是一个非预先乘得的值。因此,如果预乘 alpha,则此方法会在返回该值之前将其分离出来。例如,如果 alpha 值为 0,则绿色值为 0。

指定者:
ColorModel 中的 getGreen
参数:
pixel - 指定像素
返回:
指定像素(在 sRGB ColorSpace 中缩放范围从 0 到 255)的绿色颜色分量。

getBlue

public final int getBlue(int pixel)
返回指定像素的蓝色颜色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。将像素值指定为 int。返回的值是一个非预先乘得的值。因此,如果预乘 alpha,则此方法会在返回该值之前将其分离出来。例如,如果 alpha 值为 0,则蓝色值为 0。

指定者:
ColorModel 中的 getBlue
参数:
pixel - 指定的像素
返回:
指定像素(在 sRGB ColorSpace 中缩放范围从 0 到 255)的蓝色颜色分量。

getAlpha

public final int getAlpha(int pixel)
返回指定像素(缩放范围从 0 到 255)的 alpha 分量。像素值指定为 int

指定者:
ColorModel 中的 getAlpha
参数:
pixel - 指定像素
返回:
pixel(0 到 255)的 alpha 分量的值。

getRGB

public final int getRGB(int pixel)
返回默认的 RGB 颜色模型格式中的像素的颜色/alpha 分量。如有必要,可进行颜色转换。将像素值指定为 int。返回的值是非预乘格式。因此,如果预乘 alpha,则此方法会将它从颜色分量中分离出来。例如,如果 alpha 值为 0,则颜色值每个分量都是 0。

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

getRed

public int getRed(Object inData)
返回指定像素的红色颜色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。像素值由作为对象引用传入的类型 transferType 的数据元素的数组指定。返回的值是一个非预先乘得的值。因此,如果预乘 alpha,则此方法会在返回该值之前将其分离出来。例如,如果 alpha 值为 0,则红色值为 0。如果 inData 不是类型 transferType 的基本数组,则抛出 ClassCastException。如果 inData 不是特别大,不能存储此 ColorModel 的像素值,则抛出 ArrayIndexOutOfBoundsException。因为 DirectColorModel 可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的 transferType 时,将抛出异常。如果此 transferType 不受该 ColorModel 支持,则抛出 UnsupportedOperationException

覆盖:
ColorModel 中的 getRed
参数:
inData - 包含该像素值的数组
返回:
指定像素的红色分量的值。
抛出:
ArrayIndexOutOfBoundsException - 如果 inData 不是特别大,不能存储此颜色模型的像素值
ClassCastException - 如果 inData 不是类型 transferType 的基本数组
UnsupportedOperationException - 如果此颜色模型不支持 transferType

getGreen

public int getGreen(Object inData)
返回指定像素的绿色颜色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。像素值由作为对象引用传入的类型 transferType 的数据元素的数组指定。返回的值是一个非预先乘得的值。因此,如果预乘 alpha,则此方法会在返回该值之前将其分离出来。例如,如果 alpha 值为 0,则绿色值为 0。如果 inData 不是类型 transferType 的基本数组,则抛出 ClassCastException。如果 inData 不是特别大,不能存储此 ColorModel 的像素值,则抛出 ArrayIndexOutOfBoundsException。因为 DirectColorModel 可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的 transferType 时,将抛出异常。如果此 transferType 不受该 ColorModel 支持,则抛出 UnsupportedOperationException

覆盖:
ColorModel 中的 getGreen
参数:
inData - 包含该像素值的数组
返回:
指定像素的绿色分量的值。
抛出:
ArrayIndexOutOfBoundsException - 如果 inData 不是特别大,不能存储此颜色模型的像素值
ClassCastException - 如果 inData 不是类型 transferType 的基本数组
UnsupportedOperationException - 如果此颜色模型不支持 transferType

getBlue

public int getBlue(Object inData)
返回指定像素的蓝颜色分量,指定像素在默认的 RGB ColorSpace(即 sRGB)中缩放范围是 0 到 255。如有必要,可进行颜色转换。像素值由作为对象引用传入的类型 transferType 的数据元素的数组指定。返回的值是一个非预先乘得的值。因此,如果预乘 alpha,则此方法会在返回该值之前将其分离出来。例如,如果 alpha 值为 0,则蓝色值为 0。如果 inData 不是类型 transferType 的基本数组,则抛出 ClassCastException。如果 inData 不是特别大,不能存储此 ColorModel 的像素值,则抛出 ArrayIndexOutOfBoundsException。因为 DirectColorModel 可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的 transferType 时,将抛出异常。如果此 transferType 不受该 ColorModel 支持,则抛出 UnsupportedOperationException

覆盖:
ColorModel 中的 getBlue
参数:
inData - 包含像素值的数组
返回:
指定像素的蓝色分量的值。
抛出:
ArrayIndexOutOfBoundsException - 如果 inData 不是特别大,不能存储此颜色模型的像素值
ClassCastException - 如果 inData 不是类型 transferType 的基本数组
UnsupportedOperationException - 如果此颜色模型不支持 transferType

getAlpha

public int getAlpha(Object inData)
返回指定像素(在 0 到 255 之间缩放)的 alpha 分量。像素值由作为对象引用传入的类型 transferType 的数据元素的数组指定。如果 inData 不是类型 transferType 的基本数组,则抛出 ClassCastException。如果 inData 不是特别大,不能存储此 ColorModel 的像素值,则抛出 ArrayIndexOutOfBoundsException。因为 DirectColorModel 可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的 transferType 时,将抛出异常。如果此 transferType 不受支持,则抛出 UnsupportedOperationException

覆盖:
ColorModel 中的 getAlpha
参数:
inData - 指定的像素
返回:
指定像素(在 0 到 255 之间缩放)的 alpha 分量
抛出:
ClassCastException - 如果 inData 不是类型 transferType 的基本数组
ArrayIndexOutOfBoundsException - 如果 inData 不是特别大,不能存储此 ColorModel 的像素
UnsupportedOperationException - 如果此 tranferType 不受此 ColorModel 支持

getRGB

public int getRGB(Object inData)
返回默认的 RGB 颜色模型格式中的像素的颜色/alpha 分量。如有必要,可进行颜色转换。像素值由作为对象引用传入的类型 transferType 的数据元素的数组指定。如果 inData 不是类型 transferType 的基本数组,则抛出 ClassCastException。如果 inData 不是特别大,不能存储此 ColorModel 的像素值,则抛出 ArrayIndexOutOfBoundsException。返回的值是非预乘格式。因此,如果预乘 alpha,则此方法会将它从颜色分量中分离出来。例如,如果 alpha 值为 0,则颜色值为 0。因为 DirectColorModel 可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的 transferType 时,将抛出异常。

覆盖:
ColorModel 中的 getRGB
参数:
inData - 指定的像素
返回:
指定像素的颜色和 alpha 分量。
抛出:
UnsupportedOperationException - 如果该 transferType 不受此 ColorModel 支持
另请参见:
ColorModel.getRGBdefault()

getDataElements

public Object getDataElements(int rgb,
                              Object pixel)
在默认 RGB 颜色模型中给定整数像素的表示形式的情况下,返回此 ColorModel 中像素的数据元素数组的表示形式。然后可以将此数组传递给 WritableRaster 对象的 setDataElements 方法。如果像素变量为 null,则分配一个新数组。如果 pixel 不为 null,则它必须是类型 transferType 的基本数组;否则,抛出 ClassCastException。如果 pixel 不是特别大,不能存储此 ColorModel 的像素值,则抛出 ArrayIndexOutOfBoundsException。此像素数组被返回。因为 DirectColorModel 可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的 transferType 时,将抛出异常。

覆盖:
ColorModel 中的 getDataElements
参数:
rgb - 默认的 RGB 颜色模型中的整数像素表示形式
pixel - 指定像素
返回:
ColorModel 中指定像素的数组表示形式
抛出:
ClassCastException - 如果 pixel 不是类型 transferType 的基本数组
ArrayIndexOutOfBoundsException - 如果 pixel 不是特别大,不能存储此 ColorModel 的像素值
UnsupportedOperationException - 如果此 transferType 不受此 ColorModel 支持
另请参见:
WritableRaster.setDataElements(int, int, java.lang.Object), SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)

getComponents

public final int[] getComponents(int pixel,
                                 int[] components,
                                 int offset)
返回在 ColorModel 中已给定像素的未标准化颜色/alpha 分量。将像素值指定为 int。如果该 components 数组为 null,则分配一个新数组。该 components 数组被返回。将颜色/alpha 分量存储在以 offset 开头的 components 数组中,即便此方法已分配了数组也如此。如果 components 数组不为 null 且不是特别大,不能以 offset 开头存储所有颜色和 alpha 分量,则抛出 ArrayIndexOutOfBoundsException

覆盖:
ColorModel 中的 getComponents
参数:
pixel - 指定的像素
components - 接收指定像素的颜色和 alpha 分量的数组
offset - 开始存储颜色和 alpha 分量时的 components 数组的偏移量
返回:
包含以指定偏移量开头的指定像素的颜色和 alpha 分量的数组。

getComponents

public final int[] getComponents(Object pixel,
                                 int[] components,
                                 int offset)
返回在 ColorModel 中已给定像素的未标准化颜色/alpha 分量。像素值由作为对象引用传入的类型 transferType 的数据元素的数组指定。如果 pixel 不是类型 transferType 的基本数组,则抛出 ClassCastException。如果 pixel 不是特别大,不能存储此 ColorModel 的像素值,则抛出 ArrayIndexOutOfBoundsException。如果该 components 数组为 null,则分配一个新数组。该 components 数组被返回。将颜色/alpha 分量存储在以 offset 开头的 components 数组中,即便此方法已分配了数组也如此。如果 components 数组不为 null 且不是特别大,不能以 offset 开头存储所有颜色和 alpha 分量,则抛出 ArrayIndexOutOfBoundsException。因为 DirectColorModel 可以子类化,所以子类可以继承此方法的实现,并且如果不重写此方法,则当它们使用不受支持的 transferType 时,将抛出异常。

覆盖:
ColorModel 中的 getComponents
参数:
pixel - 指定的像素
components - 接收指定像素的颜色和 alpha 分量的数组
offset - 开始存储颜色和 alpha 分量时的 components 数组的偏移量
返回:
包含以指定偏移量开头的指定像素的颜色和 alpha 分量的数组。
抛出:
ClassCastException - 如果 pixel 不是类型 transferType 的基本数组
ArrayIndexOutOfBoundsException - 如果 pixel 不是特别大,不能存储此 ColorModel 的像素值,或如果 components 不为 null 且不是特别大,不能以 offset 开头保存所有颜色和 alpha 分量
UnsupportedOperationException - 如果此 transferType 不受此颜色模型支持

createCompatibleWritableRaster

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

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

JDK 1.6 中文手册