JavaTM 2 Platform
Standard Ed. 6

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 物件中的位集指示哪些 colormap 項是有效的,以及哪些項表示不可用的顏色。此顏色模型與 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。

用於 colormap 中索引的那些值取自像素表示形式的最低有效 n 位,其中 n 基於建構子中指定的像素大小。對於小於 8 位的像素大小,n 向上捨入為 2 的次方(3 變為 4,5、6 和 7 則變為 8)。對於介於 8 和 16 位之間的像素大小,n 就等於像素大小。大於 16 位的像素大小不受此類別的支持。在像素表示形式中,超過 n 的高位位元組將被忽略。大於或等於映射大小、但小於 2n 的索引值是未定義的,並對所有顏色和 alpha 元件返回 0。

對於那些使用 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 之一
從以下版本開始:
1.3
方法詳細資訊

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 值。只有像素值的較低 n 位用於計算返回的值,正如上文類別描述中所指定的。返回值是一個未預乘的值。

指定者:
類別 ColorModel 中的 getRed
參數:
pixel - 指定的像素
返回:
指定像素的紅色份量值

getGreen

public final int getGreen(int pixel)
返回指定像素的綠色份量,在預設的 RGB ColorSpace (sRGB) 中為 0 到 255。該像素值指定為 int 值。只有像素值的較低 n 位用於計算返回的值,正如上文類別描述中所指定的。返回值是一個未預乘的值。

指定者:
類別 ColorModel 中的 getGreen
參數:
pixel - 指定的像素
返回:
指定像素的綠色份量值

getBlue

public final int getBlue(int pixel)
返回指定像素的藍色份量,在預設的 RGB ColorSpace (sRGB) 中為 0 到 255。該像素值指定為 int 值。只有像素值的較低 n 位用於計算返回的值,正如上文類別描述中所指定的。返回值是一個未預乘的值。

指定者:
類別 ColorModel 中的 getBlue
參數:
pixel - 指定的像素
返回:
指定像素的藍色份量值

getAlpha

public final int getAlpha(int pixel)
返回指定像素的 alpha 份量,該值為 0 到 255。該像素值指定為 int 值。只有像素值的較低 n 位用於計算返回的值,正如上文類別描述中所指定的。

指定者:
類別 ColorModel 中的 getAlpha
參數:
pixel - 指定的像素
返回:
指定像素的 alpha 份量值

getRGB

public final int getRGB(int pixel)
以預設 RGB 顏色模型格式返回像素的顏色/alpha 份量。該像素值指定為 int 值。只有像素值的較低 n 位用於計算返回的值,正如上文類別描述中所指定的。返回值是一個未預乘格式的值。

覆寫:
類別 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 中的各索引來計算的。只有源 Raster 中每個像素值的較低 n 位用於計算返回圖像中的 color/alpha 值,正如上文類別描述中所指定的。如果 forceARGBtrue,則無論此 ColorModel 是否有 alpha 份量陣列或透明像素,都返回一幅 TYPE_INT_ARGB 圖像。

參數:
raster - 指定的 Raster
forceARGB - 如果為 true,則返回的 BufferedImage 是 TYPE_INT_ARGB;否則是 TYPE_INT_RGB
返回:
使用指定 Raster 創建的 BufferedImage
拋出:
IllegalArgumentException - 如果 raster 參數與此 IndexColorModel 不相容

isValid

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

參數:
pixel - 指定的像素值
返回:
如果 pixel 有效,則返回 true;否則返回 false
從以下版本開始:
1.3

isValid

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

返回:
如果所有像素都有效,則返回 true;否則返回 false
從以下版本開始:
1.3

getValidPixels

public BigInteger getValidPixels()
返回一個指示 colormap 中有效/無效像素的 BigInteger。如果設置了某個位索引處的 BigInteger 值,則該位是有效的;如果未設置該索引處的 BigInteger 值,則該位是無效的。BigInteger 中惟一有效的查詢範圍是 0 到 colormap 的大小。

返回:
一個指示有效/無效像素的 BigInteger
從以下版本開始:
1.3

finalize

public void finalize()
不再參考此 ColorModel 後,釋放與此 ColorModel 關聯的系統資源。

覆寫:
類別 ColorModel 中的 finalize

toString

public String toString()
返回此 ColorModel 物件內容的 String 表示形式。

覆寫:
類別 ColorModel 中的 toString
返回:
表示此 ColorModel 物件內容的 String

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only