JavaTM 2 Platform
Standard Ed. 6

java.awt.image
類別 MemoryImageSource

java.lang.Object
  繼承者 java.awt.image.MemoryImageSource
所有已實作的介面:
ImageProducer

public class MemoryImageSource
extends Object
implements ImageProducer

此類別是 ImageProducer 介面的一個實作,該介面使用一個陣列為 Image 產生像素值。下面的範例計算了一幅 100x100 的圖像,表示沿 X 軸從黑色漸變到藍色,沿 Y 軸從黑色漸變到紅色:

 
        int w = 100;
        int h = 100;
        int pix[] = new int[w * h];
        int index = 0;
        for (int y = 0; y < h; y++) {
            int red = (y * 255) / (h - 1);
            for (int x = 0; x < w; x++) {
                int blue = (x * 255) / (w - 1);
                pix[index++] = (255 << 24) | (red << 16) | blue;
            }
        }
        Image img = createImage(new MemoryImageSource(w, h, pix, 0, w));
 
 
MemoryImageSource 還能夠管理隨時間的推移而變化的記憶體圖像,以實作動畫或自定義呈現。下面的範例顯示了如何設置動畫源並通知資料的改變(改編自 Garth Dickie 的 MemoryAnimationSourceDemo):

        int pixels[];
        MemoryImageSource source;

        public void init() {
            int width = 50;
            int height = 50;
            int size = width * height;
            pixels = new int[size];

            int value = getBackground().getRGB();
            for (int i = 0; i < size; i++) {
                pixels[i] = value;
            }

            source = new MemoryImageSource(width, height, pixels, 0, width);
            source.setAnimated(true);
            image = createImage(source);
        }

        public void run() {
            Thread me = Thread.currentThread( );
            me.setPriority(Thread.MIN_PRIORITY);

            while (true) {
                try {
                    thread.sleep(10);
                } catch( InterruptedException e ) {
                    return;
                }

                // Modify the values in the pixels array at (x, y, w, h)

                // Send the new data to the interested ImageConsumers
                source.newPixels(x, y, w, h);
            }
        }

 

另請參見:
ImageProducer

建構子摘要
MemoryImageSource(int w, int h, ColorModel cm, byte[] pix, int off, int scan)
          建構一個使用 byte 陣列為 Image 物件產生資料的 ImageProducer 物件。
MemoryImageSource(int w, int h, ColorModel cm, byte[] pix, int off, int scan, Hashtable<?,?> props)
          建構一個使用 byte 陣列為 Image 物件產生資料的 ImageProducer 物件。
MemoryImageSource(int w, int h, ColorModel cm, int[] pix, int off, int scan)
          建構一個使用整數陣列為 Image 物件產生資料的 ImageProducer 物件。
MemoryImageSource(int w, int h, ColorModel cm, int[] pix, int off, int scan, Hashtable<?,?> props)
          建構一個使用整數陣列為 Image 物件產生資料的 ImageProducer 物件。
MemoryImageSource(int w, int h, int[] pix, int off, int scan)
          建構一個使用預設 RGB ColorModel 中的整數陣列為 Image 物件產生資料的 ImageProducer 物件。
MemoryImageSource(int w, int h, int[] pix, int off, int scan, Hashtable<?,?> props)
          建構一個使用預設 RGB ColorModel 中的整數陣列為 Image 物件產生資料的 ImageProducer 物件。
 
方法摘要
 void addConsumer(ImageConsumer ic)
          將 ImageConsumer 添加到對此圖像資料感興趣的使用者列表。
 boolean isConsumer(ImageConsumer ic)
          確定某個 ImageConsumer 目前是否處於對此圖像資料感興趣的使用者列表中。
 void newPixels()
          將全部的新像素緩衝區發送到所有目前對此圖像資料感興趣的 ImageConsumer,並通知這些 ImageConsumer 一個動畫幀已完成。
 void newPixels(byte[] newpix, ColorModel newmodel, int offset, int scansize)
          改用一個新的 byte 陣列以保存此圖像的像素。
 void newPixels(int[] newpix, ColorModel newmodel, int offset, int scansize)
          改用一個新的 int 陣列以保存此圖像的像素。
 void newPixels(int x, int y, int w, int h)
          將像素緩衝區的矩形區域發送到所有目前對此圖像資料感興趣的 ImageConsumer,並通知這些 ImageConsumer 一個動畫幀已完成。
 void newPixels(int x, int y, int w, int h, boolean framenotify)
          將像素緩衝區的矩形區域發送到所有目前對此圖像資料感興趣的 ImageConsumer。
 void removeConsumer(ImageConsumer ic)
          從對此圖像資料感興趣的使用者列表中移除 ImageConsumer。
 void requestTopDownLeftRightResend(ImageConsumer ic)
          請求給定的 ImageConsumer 再次按從上到下、從左到右的順序傳遞圖像資料。
 void setAnimated(boolean animated)
          根據 animated 參數將此記憶體圖像更改為多幀動畫或單幀靜態圖像。
 void setFullBufferUpdates(boolean fullbuffers)
          指定在像素緩衝區發生變化時,是否總是通過發送像素的完整緩衝區來更新此動畫記憶體圖像。
 void startProduction(ImageConsumer ic)
          將 ImageConsumer 添加到對此圖像資料感興趣的使用者列表中,並立即開始通過 ImageConsumer 介面傳遞圖像資料。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

MemoryImageSource

public MemoryImageSource(int w,
                         int h,
                         ColorModel cm,
                         byte[] pix,
                         int off,
                         int scan)
建構一個使用 byte 陣列為 Image 物件產生資料的 ImageProducer 物件。

參數:
w - 像素矩形的寬度
h - 像素矩形的高度
cm - 指定的 ColorModel
pix - 一個像素陣列
off - 陣列中存儲首個像素的偏移量
scan - 陣列中一行像素到下一行像素之間的距離
另請參見:
Component.createImage(java.awt.image.ImageProducer)

MemoryImageSource

public MemoryImageSource(int w,
                         int h,
                         ColorModel cm,
                         byte[] pix,
                         int off,
                         int scan,
                         Hashtable<?,?> props)
建構一個使用 byte 陣列為 Image 物件產生資料的 ImageProducer 物件。

參數:
w - 像素矩形的寬度
h - 像素矩形的高度
cm - 指定的 ColorModel
pix - 一個像素陣列
off - 陣列中存儲首個像素的偏移量
scan - 陣列中一行像素到下一行像素之間的距離
props - ImageProducer 用於處理圖像的屬性列表
另請參見:
Component.createImage(java.awt.image.ImageProducer)

MemoryImageSource

public MemoryImageSource(int w,
                         int h,
                         ColorModel cm,
                         int[] pix,
                         int off,
                         int scan)
建構一個使用整數陣列為 Image 物件產生資料的 ImageProducer 物件。

參數:
w - 像素矩形的寬度
h - 像素矩形的高度
cm - 指定的 ColorModel
pix - 一個像素陣列
off - 陣列中存儲首個像素的偏移量
scan - 陣列中一行像素到下一行像素之間的距離
另請參見:
Component.createImage(java.awt.image.ImageProducer)

MemoryImageSource

public MemoryImageSource(int w,
                         int h,
                         ColorModel cm,
                         int[] pix,
                         int off,
                         int scan,
                         Hashtable<?,?> props)
建構一個使用整數陣列為 Image 物件產生資料的 ImageProducer 物件。

參數:
w - 像素矩形的寬度
h - 像素矩形的高度
cm - 指定的 ColorModel
pix - 一個像素陣列
off - 陣列中存儲首個像素的偏移量
scan - 陣列中一行像素到下一行像素之間的距離
props - ImageProducer 用於處理圖像的屬性列表
另請參見:
Component.createImage(java.awt.image.ImageProducer)

MemoryImageSource

public MemoryImageSource(int w,
                         int h,
                         int[] pix,
                         int off,
                         int scan)
建構一個使用預設 RGB ColorModel 中的整數陣列為 Image 物件產生資料的 ImageProducer 物件。

參數:
w - 像素矩形的寬度
h - 像素矩形的高度
pix - 一個像素陣列
off - 陣列中存儲首個像素的偏移量
scan - 陣列中一行像素到下一行像素之間的距離
另請參見:
Component.createImage(java.awt.image.ImageProducer), ColorModel.getRGBdefault()

MemoryImageSource

public MemoryImageSource(int w,
                         int h,
                         int[] pix,
                         int off,
                         int scan,
                         Hashtable<?,?> props)
建構一個使用預設 RGB ColorModel 中的整數陣列為 Image 物件產生資料的 ImageProducer 物件。

參數:
w - 像素矩形的寬度
h - 像素矩形的高度
pix - 一個像素陣列
off - 陣列中存儲首個像素的偏移量
scan - 陣列中一行像素到下一行像素之間的距離
props - ImageProducer 用於處理圖像的屬性列表
另請參見:
Component.createImage(java.awt.image.ImageProducer), ColorModel.getRGBdefault()
方法詳細資訊

addConsumer

public void addConsumer(ImageConsumer ic)
將 ImageConsumer 添加到對此圖像資料感興趣的使用者列表。

指定者:
介面 ImageProducer 中的 addConsumer
參數:
ic - 指定的 ImageConsumer
拋出:
NullPointerException - 如果指定的 ImageConsumer 為 null
另請參見:
ImageConsumer

isConsumer

public boolean isConsumer(ImageConsumer ic)
確定某個 ImageConsumer 目前是否處於對此圖像資料感興趣的使用者列表中。

指定者:
介面 ImageProducer 中的 isConsumer
參數:
ic - 指定的 ImageConsumer
返回:
如果該 ImageConsumer 處於列表中,則返回 true;否則返回 false
另請參見:
ImageConsumer

removeConsumer

public void removeConsumer(ImageConsumer ic)
從對此圖像資料感興趣的使用者列表中移除 ImageConsumer。

指定者:
介面 ImageProducer 中的 removeConsumer
參數:
ic - 指定的 ImageConsumer
另請參見:
ImageConsumer

startProduction

public void startProduction(ImageConsumer ic)
將 ImageConsumer 添加到對此圖像資料感興趣的使用者列表中,並立即開始通過 ImageConsumer 介面傳遞圖像資料。

指定者:
介面 ImageProducer 中的 startProduction
參數:
ic - 通過 ImageConsumer 介面的指定 ImageConsumer 圖像資料。
另請參見:
ImageConsumer

requestTopDownLeftRightResend

public void requestTopDownLeftRightResend(ImageConsumer ic)
請求給定的 ImageConsumer 再次按從上到下、從左到右的順序傳遞圖像資料。

指定者:
介面 ImageProducer 中的 requestTopDownLeftRightResend
參數:
ic - 指定的 ImageConsumer
另請參見:
ImageConsumer

setAnimated

public void setAnimated(boolean animated)
根據 animated 參數將此記憶體圖像更改為多幀動畫或單幀靜態圖像。

應該在建構 MemoryImageSource 後和使用它創建圖像前立即調用此方法,以確保所有的 ImageConsumer 都將接收正確的多幀資料。如果在設置此標誌前將一個 ImageConsumer 添加到此 ImageProducer 中,則該 ImageConsumer 將只能看到在它連接時可用的一個像素資料快照。

參數:
animated - 如果該圖像是一個多幀動畫,則為 true

setFullBufferUpdates

public void setFullBufferUpdates(boolean fullbuffers)
指定在像素緩衝區發生變化時,是否總是通過發送像素的完整緩衝區來更新此動畫記憶體圖像。如果未通過 setAnimated() 方法打開 animation 標誌,則忽略此標誌。

應該在建構 MemoryImageSource 後和使用它創建圖像前立即調用此方法,以確保所有的 ImageConsumer 都將接收正確的像素傳遞提示。

參數:
fullbuffers - 如果總是應該發送完整的像素緩衝區,則為 true
另請參見:
setAnimated(boolean)

newPixels

public void newPixels()
將全部的新像素緩衝區發送到所有目前對此圖像資料感興趣的 ImageConsumer,並通知這些 ImageConsumer 一個動畫幀已完成。僅在通過 setAnimated() 方法打開 animation 標誌時,此方法才有效。

另請參見:
newPixels(int, int, int, int, boolean), ImageConsumer, setAnimated(boolean)

newPixels

public void newPixels(int x,
                      int y,
                      int w,
                      int h)
將像素緩衝區的矩形區域發送到所有目前對此圖像資料感興趣的 ImageConsumer,並通知這些 ImageConsumer 一個動畫幀已完成。僅在通過 setAnimated() 方法打開 animation 標誌時,此方法才有效。如果已使用 setFullBufferUpdates() 方法打開了全部緩衝區更新標誌,則將忽略矩形參數並且始終發送整個緩衝區。

參數:
x - 要發送的像素矩形左上角的 x 坐標
y - 要發送的像素矩形左上角的 y 坐標
w - 要發送的像素矩形的寬度
h - 要發送的像素矩形的高度
另請參見:
newPixels(int, int, int, int, boolean), ImageConsumer, setAnimated(boolean), setFullBufferUpdates(boolean)

newPixels

public void newPixels(int x,
                      int y,
                      int w,
                      int h,
                      boolean framenotify)
將像素緩衝區的矩形區域發送到所有目前對此圖像資料感興趣的 ImageConsumer。如果 framenotify 參數為 true,則通知使用者一幅動畫幀已完成。僅在通過 setAnimated() 方法打開 animation 標誌時,此方法才有效。如果已使用 setFullBufferUpdates() 方法打開了全部緩衝區更新標誌,則將忽略矩形參數並且始終發送整個緩衝區。

參數:
x - 要發送的像素矩形左上角的 x 坐標
y - 要發送的像素矩形左上角的 y 坐標
w - 要發送的像素矩形的寬度
h - 要發送的像素矩形的高度
framenotify - 如果應該向使用者發送 SINGLEFRAMEDONE 通知,則為 true
另請參見:
ImageConsumer, setAnimated(boolean), setFullBufferUpdates(boolean)

newPixels

public void newPixels(byte[] newpix,
                      ColorModel newmodel,
                      int offset,
                      int scansize)
改用一個新的 byte 陣列以保存此圖像的像素。如果已通過 setAnimated() 方法打開了 animation 標誌,則立即將新的像素傳遞到所有目前對此圖像資料感興趣的 ImageConsumer。

參數:
newpix - 新的像素陣列
newmodel - 指定的 ColorModel
offset - 陣列中的偏移量
scansize - 陣列中一行像素到下一行像素之間的距離
另請參見:
newPixels(int, int, int, int, boolean), setAnimated(boolean)

newPixels

public void newPixels(int[] newpix,
                      ColorModel newmodel,
                      int offset,
                      int scansize)
改用一個新的 int 陣列以保存此圖像的像素。如果已通過 setAnimated() 方法打開了 animation 標誌,則立即將新的像素傳遞到所有目前對此圖像資料感興趣的 ImageConsumer。

參數:
newpix - 新的像素陣列
newmodel - 指定的 ColorModel
offset - 陣列中的偏移量
scansize - 陣列中一行像素到下一行像素之間的距離
另請參見:
newPixels(int, int, int, int, boolean), setAnimated(boolean)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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