本文整理匯總了Java中java.awt.image.ImageConsumer.imageComplete方法的典型用法代碼示例。如果您正苦於以下問題:Java ImageConsumer.imageComplete方法的具體用法?Java ImageConsumer.imageComplete怎麽用?Java ImageConsumer.imageComplete使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類java.awt.image.ImageConsumer
的用法示例。
在下文中一共展示了ImageConsumer.imageComplete方法的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: addConsumer
import java.awt.image.ImageConsumer; //導入方法依賴的package包/類
/**
* Adds an ImageConsumer to the list of consumers interested in
* data for this image.
* @param ic the specified <code>ImageConsumer</code>
* @throws NullPointerException if the specified
* <code>ImageConsumer</code> is null
* @see ImageConsumer
*/
public synchronized void addConsumer(ImageConsumer ic) {
if (theConsumers.contains(ic)) {
return;
}
theConsumers.addElement(ic);
try {
initConsumer(ic);
sendPixels(ic, 0, 0, width, height);
if (isConsumer(ic)) {
ic.imageComplete(animating
? ImageConsumer.SINGLEFRAMEDONE
: ImageConsumer.STATICIMAGEDONE);
if (!animating && isConsumer(ic)) {
ic.imageComplete(ImageConsumer.IMAGEERROR);
removeConsumer(ic);
}
}
} catch (Exception e) {
if (isConsumer(ic)) {
ic.imageComplete(ImageConsumer.IMAGEERROR);
}
}
}
示例2: addConsumer
import java.awt.image.ImageConsumer; //導入方法依賴的package包/類
/**
* Adds an ImageConsumer to the list of consumers interested in
* data for this image.
* @param ic the specified {@code ImageConsumer}
* @throws NullPointerException if the specified
* {@code ImageConsumer} is null
* @see ImageConsumer
*/
public synchronized void addConsumer(ImageConsumer ic) {
if (theConsumers.contains(ic)) {
return;
}
theConsumers.addElement(ic);
try {
initConsumer(ic);
sendPixels(ic, 0, 0, width, height);
if (isConsumer(ic)) {
ic.imageComplete(animating
? ImageConsumer.SINGLEFRAMEDONE
: ImageConsumer.STATICIMAGEDONE);
if (!animating && isConsumer(ic)) {
ic.imageComplete(ImageConsumer.IMAGEERROR);
removeConsumer(ic);
}
}
} catch (Exception e) {
if (isConsumer(ic)) {
ic.imageComplete(ImageConsumer.IMAGEERROR);
}
}
}
示例3: setAnimated
import java.awt.image.ImageConsumer; //導入方法依賴的package包/類
/**
* Changes this memory image into a multi-frame animation or a
* single-frame static image depending on the animated parameter.
* <p>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.
* @param animated <code>true</code> if the image is a
* multi-frame animation
*/
public synchronized void setAnimated(boolean animated) {
this.animating = animated;
if (!animating) {
Enumeration enum_ = theConsumers.elements();
while (enum_.hasMoreElements()) {
ImageConsumer ic = (ImageConsumer) enum_.nextElement();
ic.imageComplete(ImageConsumer.STATICIMAGEDONE);
if (isConsumer(ic)) {
ic.imageComplete(ImageConsumer.IMAGEERROR);
}
}
theConsumers.removeAllElements();
}
}
示例4: newPixels
import java.awt.image.ImageConsumer; //導入方法依賴的package包/類
/**
* Sends a rectangular region of the buffer of pixels to any
* ImageConsumers that are currently interested in the data for
* this image.
* If the framenotify parameter is true then the consumers are
* also notified that an animation frame is complete.
* This method only has effect if the animation flag has been
* turned on through the setAnimated() method.
* If the full buffer update flag was turned on with the
* setFullBufferUpdates() method then the rectangle parameters
* will be ignored and the entire buffer will always be sent.
* @param x the x coordinate of the upper left corner of the rectangle
* of pixels to be sent
* @param y the y coordinate of the upper left corner of the rectangle
* of pixels to be sent
* @param w the width of the rectangle of pixels to be sent
* @param h the height of the rectangle of pixels to be sent
* @param framenotify <code>true</code> if the consumers should be sent a
* {@link ImageConsumer#SINGLEFRAMEDONE SINGLEFRAMEDONE} notification
* @see ImageConsumer
* @see #setAnimated
* @see #setFullBufferUpdates
*/
public synchronized void newPixels(int x, int y, int w, int h,
boolean framenotify) {
if (animating) {
if (fullbuffers) {
x = y = 0;
w = width;
h = height;
} else {
if (x < 0) {
w += x;
x = 0;
}
if (x + w > width) {
w = width - x;
}
if (y < 0) {
h += y;
y = 0;
}
if (y + h > height) {
h = height - y;
}
}
if ((w <= 0 || h <= 0) && !framenotify) {
return;
}
Enumeration enum_ = theConsumers.elements();
while (enum_.hasMoreElements()) {
ImageConsumer ic = (ImageConsumer) enum_.nextElement();
if (w > 0 && h > 0) {
sendPixels(ic, x, y, w, h);
}
if (framenotify && isConsumer(ic)) {
ic.imageComplete(ImageConsumer.SINGLEFRAMEDONE);
}
}
}
}
示例5: setAnimated
import java.awt.image.ImageConsumer; //導入方法依賴的package包/類
/**
* Changes this memory image into a multi-frame animation or a
* single-frame static image depending on the animated parameter.
* <p>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.
* @param animated {@code true} if the image is a
* multi-frame animation
*/
public synchronized void setAnimated(boolean animated) {
this.animating = animated;
if (!animating) {
Enumeration<ImageConsumer> enum_ = theConsumers.elements();
while (enum_.hasMoreElements()) {
ImageConsumer ic = enum_.nextElement();
ic.imageComplete(ImageConsumer.STATICIMAGEDONE);
if (isConsumer(ic)) {
ic.imageComplete(ImageConsumer.IMAGEERROR);
}
}
theConsumers.removeAllElements();
}
}
示例6: newPixels
import java.awt.image.ImageConsumer; //導入方法依賴的package包/類
/**
* Sends a rectangular region of the buffer of pixels to any
* ImageConsumers that are currently interested in the data for
* this image.
* If the framenotify parameter is true then the consumers are
* also notified that an animation frame is complete.
* This method only has effect if the animation flag has been
* turned on through the setAnimated() method.
* If the full buffer update flag was turned on with the
* setFullBufferUpdates() method then the rectangle parameters
* will be ignored and the entire buffer will always be sent.
* @param x the x coordinate of the upper left corner of the rectangle
* of pixels to be sent
* @param y the y coordinate of the upper left corner of the rectangle
* of pixels to be sent
* @param w the width of the rectangle of pixels to be sent
* @param h the height of the rectangle of pixels to be sent
* @param framenotify {@code true} if the consumers should be sent a
* {@link ImageConsumer#SINGLEFRAMEDONE SINGLEFRAMEDONE} notification
* @see ImageConsumer
* @see #setAnimated
* @see #setFullBufferUpdates
*/
public synchronized void newPixels(int x, int y, int w, int h,
boolean framenotify) {
if (animating) {
if (fullbuffers) {
x = y = 0;
w = width;
h = height;
} else {
if (x < 0) {
w += x;
x = 0;
}
if (x + w > width) {
w = width - x;
}
if (y < 0) {
h += y;
y = 0;
}
if (y + h > height) {
h = height - y;
}
}
if ((w <= 0 || h <= 0) && !framenotify) {
return;
}
Enumeration<ImageConsumer> enum_ = theConsumers.elements();
while (enum_.hasMoreElements()) {
ImageConsumer ic = enum_.nextElement();
if (w > 0 && h > 0) {
sendPixels(ic, x, y, w, h);
}
if (framenotify && isConsumer(ic)) {
ic.imageComplete(ImageConsumer.SINGLEFRAMEDONE);
}
}
}
}
示例7: run
import java.awt.image.ImageConsumer; //導入方法依賴的package包/類
/**
* The runnable method for this class. This will produce an image using
* the current RenderableImage and RenderContext and send it to all the
* ImageConsumer currently registered with this class.
*/
public void run() {
// First get the rendered image
RenderedImage rdrdImage;
if (rc != null) {
rdrdImage = rdblImage.createRendering(rc);
} else {
rdrdImage = rdblImage.createDefaultRendering();
}
// And its ColorModel
ColorModel colorModel = rdrdImage.getColorModel();
Raster raster = rdrdImage.getData();
SampleModel sampleModel = raster.getSampleModel();
DataBuffer dataBuffer = raster.getDataBuffer();
if (colorModel == null) {
colorModel = ColorModel.getRGBdefault();
}
int minX = raster.getMinX();
int minY = raster.getMinY();
int width = raster.getWidth();
int height = raster.getHeight();
Enumeration<ImageConsumer> icList;
ImageConsumer ic;
// Set up the ImageConsumers
icList = ics.elements();
while (icList.hasMoreElements()) {
ic = icList.nextElement();
ic.setDimensions(width,height);
ic.setHints(ImageConsumer.TOPDOWNLEFTRIGHT |
ImageConsumer.COMPLETESCANLINES |
ImageConsumer.SINGLEPASS |
ImageConsumer.SINGLEFRAME);
}
// Get RGB pixels from the raster scanline by scanline and
// send to consumers.
int pix[] = new int[width];
int i,j;
int numBands = sampleModel.getNumBands();
int tmpPixel[] = new int[numBands];
for (j = 0; j < height; j++) {
for(i = 0; i < width; i++) {
sampleModel.getPixel(i, j, tmpPixel, dataBuffer);
pix[i] = colorModel.getDataElement(tmpPixel, 0);
}
// Now send the scanline to the Consumers
icList = ics.elements();
while (icList.hasMoreElements()) {
ic = icList.nextElement();
ic.setPixels(0, j, width, 1, colorModel, pix, 0, width);
}
}
// Now tell the consumers we're done.
icList = ics.elements();
while (icList.hasMoreElements()) {
ic = icList.nextElement();
ic.imageComplete(ImageConsumer.STATICIMAGEDONE);
}
}