JavaTM 2 Platform
Standard Ed. 6

java.awt.image
類別 RGBImageFilter

java.lang.Object
  繼承者 java.awt.image.ImageFilter
      繼承者 java.awt.image.RGBImageFilter
所有已實作的介面:
ImageConsumer, Cloneable
直接已知子類別:
GrayFilter

public abstract class RGBImageFilter
extends ImageFilter

此類別提供一種便捷方式創建 ImageFilter,創建的 ImageFilter 可修改使用預設 RGB ColorModel 圖像的像素。這意味著要與 FilteredImageSource 物件結合使用來產生現有圖像的過濾形式。該類別是一個抽象類別,它提供引導所有像素資料通過單獨某個方法所需的調用,其中,無論 ImageProducer 正使用何種 ColorModel,該方法每次都會轉換預設 RGB ColorModel 中的一個像素。創建可用圖像過濾器需要定義的惟一方法是 filterRGB 方法。以下是定義交換圖像中紅色份量和藍色份量過濾器的一個例子:

        class RedBlueSwapFilter extends RGBImageFilter {
            public RedBlueSwapFilter() {
                // The filter's operation does not depend on the
                // pixel's location, so IndexColorModels can be
                // filtered directly.
                canFilterIndexColorModel = true;
            }

            public int filterRGB(int x, int y, int rgb) {
                return ((rgb & 0xff00ff00)
                        | ((rgb & 0xff0000) >> 16)
                        | ((rgb & 0xff) << 16));
            }
        }

 

另請參見:
FilteredImageSource, ImageFilter, ColorModel.getRGBdefault()

欄位摘要
protected  boolean canFilterIndexColorModel
          此布林值指示是否可以接受用 filterRGB 方法的顏色過濾替代逐像素過濾,並應用於 IndexColorModel 物件的顏色表項。
protected  ColorModel newmodel
          使用者調用 substituteColorModel 時替換 origmodelColorModel
protected  ColorModel origmodel
          使用者調用 substituteColorModel 時將由 newmodel 替換的 ColorModel
 
從類別 java.awt.image.ImageFilter 繼承的欄位
consumer
 
從介面 java.awt.image.ImageConsumer 繼承的欄位
COMPLETESCANLINES, IMAGEABORTED, IMAGEERROR, RANDOMPIXELORDER, SINGLEFRAME, SINGLEFRAMEDONE, SINGLEPASS, STATICIMAGEDONE, TOPDOWNLEFTRIGHT
 
建構子摘要
RGBImageFilter()
           
 
方法摘要
 IndexColorModel filterIndexColorModel(IndexColorModel icm)
          過濾 IndexColorModel 物件:通過 filterRGB 函數(RGBImageFilter 子類別必須提供該函數)運行該物件顏色表中的每一項。
abstract  int filterRGB(int x, int y, int rgb)
          子類別必須指定該方法,以將使用預設 RGB ColorModel 的單個輸入像素轉換成單個輸出像素。
 void filterRGBPixels(int x, int y, int w, int h, int[] pixels, int off, int scansize)
          過濾緩衝區中使用預設 RGB ColorModel 的像素:將其一個接一個地傳遞給 filterRGB 方法。
 void setColorModel(ColorModel model)
          如果 ColorModel 是 IndexColorModel 且子類別將 canFilterIndexColorModel 標誌設置為 true,則將此處及 setPixels 方法中任何出現原始 ColorModel 物件的地方替換為過濾後的顏色模型。
 void setPixels(int x, int y, int w, int h, ColorModel model, byte[] pixels, int off, int scansize)
          如果 ColorModel 物件就是已轉換後的物件,則使用轉換後的 ColorModel 傳遞像素。
 void setPixels(int x, int y, int w, int h, ColorModel model, int[] pixels, int off, int scansize)
          如果 ColorModel 物件就是已轉換後的物件,則使用轉換後的 ColorModel 傳遞像素,否則,將整數像素的緩衝區轉換為預設 RGB ColorModel,並將轉換後的緩衝區傳遞給 filterRGBPixels 方法進行逐一轉換。
 void substituteColorModel(ColorModel oldcm, ColorModel newcm)
          註冊兩個用於替換的 ColorModel 物件。
 
從類別 java.awt.image.ImageFilter 繼承的方法
clone, getFilterInstance, imageComplete, resendTopDownLeftRight, setDimensions, setHints, setProperties
 
從類別 java.lang.Object 繼承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

origmodel

protected ColorModel origmodel
使用者調用 substituteColorModel 時將由 newmodel 替換的 ColorModel


newmodel

protected ColorModel newmodel
使用者調用 substituteColorModel 時替換 origmodelColorModel


canFilterIndexColorModel

protected boolean canFilterIndexColorModel
此布林值指示是否可以接受用 filterRGB 方法的顏色過濾替代逐像素過濾,並應用於 IndexColorModel 物件的顏色表項。如果子類別的 filterRGB 方法不依賴過濾像素的坐標,則子類別應在其建構子中將此變數設置為 true。

另請參見:
substituteColorModel(java.awt.image.ColorModel, java.awt.image.ColorModel), filterRGB(int, int, int), IndexColorModel
建構子詳細資訊

RGBImageFilter

public RGBImageFilter()
方法詳細資訊

setColorModel

public void setColorModel(ColorModel model)
如果 ColorModel 是 IndexColorModel 且子類別將 canFilterIndexColorModel 標誌設置為 true,則將此處及 setPixels 方法中任何出現原始 ColorModel 物件的地方替換為過濾後的顏色模型。如果 ColorModel 不是 IndexColorModel 或者為 null,則此方法覆寫由 ImageProducer 使用的預設 ColorModel,並指定預設 RGB ColorModel。

註:此方法應由其像素將被過濾的 ImageImageProducer 調用。使用此類別過濾圖像像素的開發人員應該避免直接調用此方法,因為該操作可能干擾過濾操作。

指定者:
介面 ImageConsumer 中的 setColorModel
覆寫:
類別 ImageFilter 中的 setColorModel
參數:
model - 指定的 ColorModel
另請參見:
ImageConsumer, ColorModel.getRGBdefault()

substituteColorModel

public void substituteColorModel(ColorModel oldcm,
                                 ColorModel newcm)
註冊兩個用於替換的 ColorModel 物件。如果在運行 setPixels 方法期間遇到 oldcm,則用 newcm 替換它,並不加變動地傳遞像素(但使用新的 ColorModel 物件)。

參數:
oldcm - 要被動態替換的 ColorModel 物件
newcm - 要動態替換 oldcm 的 ColorModel 物件

filterIndexColorModel

public IndexColorModel filterIndexColorModel(IndexColorModel icm)
過濾 IndexColorModel 物件:通過 filterRGB 函數(RGBImageFilter 子類別必須提供該函數)運行該物件顏色表中的每一項。使用坐標 -1 指示將過濾的是顏色表項,而不是實際像素值。

參數:
icm - 要過濾的 IndexColorModel 物件
返回:
表示已過濾顏色的新 IndexColorModel
拋出:
NullPointerException - 如果 icm 為 null

filterRGBPixels

public void filterRGBPixels(int x,
                            int y,
                            int w,
                            int h,
                            int[] pixels,
                            int off,
                            int scansize)
過濾緩衝區中使用預設 RGB ColorModel 的像素:將其一個接一個地傳遞給 filterRGB 方法。

參數:
x - 像素區域左上角的 X 坐標
y - 像素區域左上角的 Y 坐標
w - 像素區域的寬度
h - 像素區域的高度
pixels - 像素陣列
off - pixels 陣列中的偏移量
scansize - 陣列中從一行像素到下一行像素的距離
另請參見:
ColorModel.getRGBdefault(), filterRGB(int, int, int)

setPixels

public void setPixels(int x,
                      int y,
                      int w,
                      int h,
                      ColorModel model,
                      byte[] pixels,
                      int off,
                      int scansize)
如果 ColorModel 物件就是已轉換後的物件,則使用轉換後的 ColorModel 傳遞像素。否則,將位元組像素的緩衝區轉換為預設 RGB ColorModel,並將轉換後的緩衝區傳遞給 filterRGBPixels 方法進行逐一轉換。

註:此方法應由其像素將被過濾的 ImageImageProducer 調用。使用此類別過濾圖像像素的開發人員應該避免直接調用此方法,因為該操作可能干擾過濾操作。

指定者:
介面 ImageConsumer 中的 setPixels
覆寫:
類別 ImageFilter 中的 setPixels
參數:
x - 要設置的像素區域左上角的 X 坐標
y - 要設置的像素區域左上角的 Y 坐標
w - 像素區域的寬度
h - 像素區域的高度
model - 指定的 ColorModel
pixels - 像素陣列
off - pixels 陣列中的偏移量
scansize - pixels 陣列中一行像素到下一行的距離
另請參見:
ColorModel.getRGBdefault(), filterRGBPixels(int, int, int, int, int[], int, int)

setPixels

public void setPixels(int x,
                      int y,
                      int w,
                      int h,
                      ColorModel model,
                      int[] pixels,
                      int off,
                      int scansize)
如果 ColorModel 物件就是已轉換後的物件,則使用轉換後的 ColorModel 傳遞像素,否則,將整數像素的緩衝區轉換為預設 RGB ColorModel,並將轉換後的緩衝區傳遞給 filterRGBPixels 方法進行逐一轉換。將整數像素的緩衝區轉換為預設 RGB ColorModel,並將轉換後的緩衝區傳遞給 filterRGBPixels 方法。

註:此方法應由其像素將被過濾的 ImageImageProducer 調用。使用此類別過濾圖像像素的開發人員應該避免直接調用此方法,因為該操作可能干擾過濾操作。

指定者:
介面 ImageConsumer 中的 setPixels
覆寫:
類別 ImageFilter 中的 setPixels
參數:
x - 要設置的像素區域左上角的 X 坐標
y - 要設置的像素區域左上角的 Y 坐標
w - 像素區域的寬度
h - 像素區域的高度
model - 指定的 ColorModel
pixels - 像素陣列
off - pixels 陣列中的偏移量
scansize - pixels 陣列中一行像素到下一行的距離
另請參見:
ColorModel.getRGBdefault(), filterRGBPixels(int, int, int, int, int[], int, int)

filterRGB

public abstract int filterRGB(int x,
                              int y,
                              int rgb)
子類別必須指定該方法,以將使用預設 RGB ColorModel 的單個輸入像素轉換成單個輸出像素。

參數:
x - 像素的 X 坐標
y - 像素的 Y 坐標
rgb - 使用預設 RGB 顏色模型的整數像素表示
返回:
使用預設 RGB 顏色模型的過濾後的像素。
另請參見:
ColorModel.getRGBdefault(), filterRGBPixels(int, int, int, int, int[], int, int)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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