All Packages Class Hierarchy This Package Previous Next Index
java.lang.Object
|
+----java.awt.image.MemoryImageSource
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));
The MemoryImageSource is also capable of managing a memory image which
varies over time to allow animation or custom rendering. Here is an
example showing how to set up the animation source and signal changes
in the data (adapted from the MemoryAnimationSourceDemo by Garth Dickie):
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);
}
}
public MemoryImageSource(int w,
int h,
ColorModel cm,
byte pix[],
int off,
int scan)
public MemoryImageSource(int w,
int h,
ColorModel cm,
byte pix[],
int off,
int scan,
Hashtable props)
public MemoryImageSource(int w,
int h,
ColorModel cm,
int pix[],
int off,
int scan)
public MemoryImageSource(int w,
int h,
ColorModel cm,
int pix[],
int off,
int scan,
Hashtable props)
public MemoryImageSource(int w,
int h,
int pix[],
int off,
int scan)
public MemoryImageSource(int w,
int h,
int pix[],
int off,
int scan,
Hashtable props)
public synchronized void addConsumer(ImageConsumer ic)
public synchronized boolean isConsumer(ImageConsumer ic)
public synchronized void removeConsumer(ImageConsumer ic)
public void startProduction(ImageConsumer ic)
public void requestTopDownLeftRightResend(ImageConsumer ic)
public synchronized void setAnimated(boolean animated)
This method should be called immediately after the MemoryImageSource is constructed and before an image is created with it to ensure that all ImageConsumers will receive the correct multi-frame data. If an ImageConsumer is added to this ImageProducer before this flag is set then that ImageConsumer will see only a snapshot of the pixel data that was available when it connected.
public synchronized void setFullBufferUpdates(boolean fullbuffers)
This method should be called immediately after the MemoryImageSource is constructed and before an image is created with it to ensure that all ImageConsumers will receive the correct pixel delivery hints.
public void newPixels()
public synchronized void newPixels(int x,
int y,
int w,
int h)
public synchronized void newPixels(int x,
int y,
int w,
int h,
boolean framenotify)
public synchronized void newPixels(byte newpix[],
ColorModel newmodel,
int offset,
int scansize)
public synchronized void newPixels(int newpix[],
ColorModel newmodel,
int offset,
int scansize)
All Packages Class Hierarchy This Package Previous Next Index