Класс MemoryImageSource
- Все реализованные интерфейсы:
ImageProducer
public class MemoryImageSource extends Object implements ImageProducer
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 также способен управлять изображением в памяти, которое изменяется со временем, что позволяет создавать анимацию или пользовательскую отрисовку. Вот пример, показывающий, как настроить источник анимации и сигнализировать о изменениях в данных (адаптировано из MemoryAnimationSourceDemo, автор 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);
}
}
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
MemoryImageSource |
Создает объект ImageProducer, который использует массив целых чисел в стандартной цветовой модели RGB для создания данных для объекта Image. |
MemoryImageSource |
Создает объект ImageProducer, который использует массив целых чисел в стандартной цветовой модели RGB для создания данных для объекта Image. |
MemoryImageSource |
Создает объект ImageProducer, который использует массив байтов для создания данных для объекта Image. |
MemoryImageSource |
Создает объект ImageProducer, который использует массив байтов для создания данных для объекта Image. |
MemoryImageSource |
Создает объект ImageProducer, который использует массив целых чисел для создания данных для объекта Image. |
MemoryImageSource |
Создает объект ImageProducer, который использует массив целых чисел для создания данных для объекта Image. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addConsumer |
Добавляет ImageConsumer в список потребителей, заинтересованных в данных для этого изображения. |
boolean |
isConsumer |
Определяет, присутствует ли ImageConsumer в списке потребителей, которые в данный момент заинтересованы в данных для этого изображения. |
void |
newPixels() |
Отправляет полностью новый буфер пикселей всем ImageConsumers, которые в данный момент заинтересованы в данных для этого изображения, и сообщает им, что кадр анимации завершен. |
void |
newPixels |
Изменяет на новый массив байтов для хранения пикселей этого изображения. |
void |
newPixels |
Изменяет на новый массив целых чисел для хранения пикселей этого изображения. |
void |
newPixels |
Отправляет прямоугольную область буфера пикселей всем ImageConsumers, которые в данный момент заинтересованы в данных для этого изображения, и сообщает им, что кадр анимации завершен. |
void |
newPixels |
Отправляет прямоугольную область буфера пикселей всем ImageConsumers, которые в данный момент заинтересованы в данных для этого изображения. |
void |
removeConsumer |
Удаляет ImageConsumer из списка потребителей, заинтересованных в данных для этого изображения. |
void |
requestTopDownLeftRightResend |
Запрашивает, чтобы данные изображения для данного ImageConsumer были переданы еще раз в порядке сверху вниз, слева направо. |
void |
setAnimated |
Преобразует это изображение в памяти в анимацию из нескольких кадров или в статическое изображение из одного кадра в зависимости от параметра animated. |
void |
setFullBufferUpdates |
Указывает, должно ли это анимированное изображение в памяти всегда обновляться путем отправки всего буфера пикселей при каждом изменении. |
void |
startProduction |
Добавляет ImageConsumer в список потребителей, заинтересованных в данных для этого изображения, и сразу же начинает передачу данных изображения через интерфейс ImageConsumer. |
Подробное описание конструкторов
MemoryImageSource
public MemoryImageSource(int w, int h, ColorModel cm, byte[] pix, int off, int scan)
- Параметры:
-
w- ширина прямоугольника пикселей -
h- высота прямоугольника пикселей -
cm- указанныйColorModel -
pix- массив пикселей -
off- смещение в массиве, где хранится первый пиксель -
scan- расстояние между строками пикселей в массиве - См. также:
MemoryImageSource
public MemoryImageSource(int w, int h, ColorModel cm, byte[] pix, int off, int scan, Hashtable<?,?> props)
- Параметры:
-
w- ширина прямоугольника пикселей -
h- высота прямоугольника пикселей -
cm- указанныйColorModel -
pix- массив пикселей -
off- смещение в массиве, где хранится первый пиксель -
scan- расстояние между строками пикселей в массиве -
props- список свойств, которые используетImageProducerдля обработки изображения - См. также:
MemoryImageSource
public MemoryImageSource(int w, int h, ColorModel cm, int[] pix, int off, int scan)
- Параметры:
-
w- ширина прямоугольника пикселей -
h- высота прямоугольника пикселей -
cm- указанныйColorModel -
pix- массив пикселей -
off- смещение в массиве, где хранится первый пиксель -
scan- расстояние между строками пикселей в массиве - См. также:
MemoryImageSource
public MemoryImageSource(int w, int h, ColorModel cm, int[] pix, int off, int scan, Hashtable<?,?> props)
- Параметры:
-
w- ширина прямоугольника пикселей -
h- высота прямоугольника пикселей -
cm- указанныйColorModel -
pix- массив пикселей -
off- смещение в массиве, где хранится первый пиксель -
scan- расстояние между строками пикселей в массиве -
props- список свойств, которые используетImageProducerдля обработки изображения - См. также:
MemoryImageSource
public MemoryImageSource(int w, int h, int[] pix, int off, int scan)
- Параметры:
-
w- ширина прямоугольника пикселей -
h- высота прямоугольника пикселей -
pix- массив пикселей -
off- смещение в массиве, где хранится первый пиксель -
scan- расстояние между строками пикселей в массиве - См. также:
MemoryImageSource
public MemoryImageSource(int w, int h, int[] pix, int off, int scan, Hashtable<?,?> props)
- Параметры:
-
w- ширина прямоугольника пикселей -
h- высота прямоугольника пикселей -
pix- массив пикселей -
off- смещение в массиве, где хранится первый пиксель -
scan- расстояние между строками пикселей в массиве -
props- список свойств, которые используетImageProducerдля обработки изображения - См. также:
Подробное описание методов
addConsumer
public void addConsumer(ImageConsumer ic)
- Унаследованно от:
-
addConsumerв интерфейсеImageProducer - Параметры:
-
ic- указанныйImageConsumer - Исключения:
-
NullPointerException- если указанныйImageConsumerравен null - См. также:
isConsumer
public boolean isConsumer(ImageConsumer ic)
- Унаследованно от:
-
isConsumerв интерфейсеImageProducer - Параметры:
-
ic- указанныйImageConsumer - Возвращает:
-
true, еслиImageConsumerприсутствует в списке;falseв противном случае. - См. также:
removeConsumer
public void removeConsumer(ImageConsumer ic)
- Унаследованно от:
-
removeConsumerв интерфейсеImageProducer - Параметры:
-
ic- указанныйImageConsumer - См. также:
startProduction
public void startProduction(ImageConsumer ic)
- Унаследованно от:
-
startProductionв интерфейсеImageProducer - Параметры:
-
ic- указанныйImageConsumerпотребитель для передачи данных изображения через интерфейс ImageConsumer. - См. также:
requestTopDownLeftRightResend
public void requestTopDownLeftRightResend(ImageConsumer ic)
- Унаследованно от:
-
requestTopDownLeftRightResendв интерфейсеImageProducer - Параметры:
-
ic- указанныйImageConsumer - См. также:
setAnimated
public void setAnimated(boolean animated)
Этот метод следует вызывать сразу после создания MemoryImageSource и перед созданием изображения с его помощью, чтобы гарантировать, что все ImageConsumers получат правильные данные мультифрейма. Если ImageConsumer добавляется к этому ImageProducer до установки этого флага, ImageConsumer увидит только снимок данных пикселей, которые были доступны в момент подключения.
- Параметры:
-
animated-true, если изображение представляет собой мультифреймовую анимацию
setFullBufferUpdates
public void setFullBufferUpdates(boolean fullbuffers)
Этот метод следует вызывать сразу после создания MemoryImageSource и перед созданием изображения с его помощью, чтобы гарантировать, что все ImageConsumers получат правильные подсказки по доставке пикселей.
- Параметры:
-
fullbuffers-true, если весь буфер пикселей должен всегда отправляться - См. также:
newPixels
public void newPixels()
- См. также:
newPixels
public void newPixels(int x, int y, int w, int h)
- Параметры:
-
x- координата x левого верхнего угла прямоугольника пикселей, которые нужно отправить -
y- координата y левого верхнего угла прямоугольника пикселей, которые нужно отправить -
w- ширина прямоугольника пикселей, которые нужно отправить -
h- высота прямоугольника пикселей, которые нужно отправить - См. также:
newPixels
public void newPixels(int x, int y, int w, int h, boolean framenotify)
- Параметры:
-
x- координата x левого верхнего угла прямоугольника пикселей, которые нужно отправить -
y- координата y левого верхнего угла прямоугольника пикселей, которые нужно отправить -
w- ширина прямоугольника пикселей, которые нужно отправить -
h- высота прямоугольника пикселей, которые нужно отправить -
framenotify-true, если потребителям следует отправить уведомлениеSINGLEFRAMEDONE - См. также:
newPixels
public void newPixels(byte[] newpix, ColorModel newmodel, int offset, int scansize)
- Параметры:
-
newpix- новый массив пикселей -
newmodel- заданнаяColorModel -
offset- смещение в массиве -
scansize- расстояние между строками пикселей в массиве - См. также:
newPixels
public void newPixels(int[] newpix, ColorModel newmodel, int offset, int scansize)
- Параметры:
-
newpix- новый массив пикселей -
newmodel- заданнаяColorModel -
offset- смещение в массиве -
scansize- расстояние между строками пикселей в массиве - См. также:
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/image/MemoryImageSource.html