Класс 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 Гарта Дики):
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() |
Отправляет новый буфер пикселей всем ImageConsumer, в данный момент заинтересованным в данных этого изображения, и уведомляет их о завершении кадра анимации. |
void |
newPixels |
Заменяет массив байтов, содержащий пиксели этого изображения, новым массивом. |
void |
newPixels |
Заменяет массив целых чисел, содержащий пиксели этого изображения, новым массивом. |
void |
newPixels |
Отправляет прямоугольную область буфера пикселей всем ImageConsumer, в данный момент заинтересованным в данных этого изображения, и уведомляет их о завершении кадра анимации. |
void |
newPixels |
Отправляет прямоугольную область буфера пикселей всем ImageConsumer, в данный момент заинтересованным в данных этого изображения. |
void |
removeConsumer |
Удаляет ImageConsumer из списка потребителей, заинтересованных в данных этого изображения. |
void |
requestTopDownLeftRightResend |
Запрашивает повторную доставку данных изображения указанному ImageConsumer в порядке сверху вниз и слева направо. |
void |
setAnimated |
Преобразует это изображение в памяти в много кадровую анимацию или статичное изображение с одним кадром в зависимости от параметра animated. |
void |
setFullBufferUpdates |
Задаёт, следует ли всегда обновлять это анимированное изображение в памяти, отправляя полный буфер пикселей при каждом изменении. |
void |
startProduction |
Добавляет ImageConsumer в список потребителей, заинтересованных в данных этого изображения, и немедленно начинает передачу данных изображения через интерфейс ImageConsumer. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Показывает, равен ли этот объект другому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Финализация устарела и может быть удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого объекта Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Приостанавливает выполнение текущего потока до его пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Приостанавливает выполнение текущего потока до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного интервала реального времени. |
final void |
wait |
Приостанавливает выполнение текущего потока до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного интервала реального времени. |
Подробное описание конструкторов
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 и до создания изображения с его помощью, чтобы гарантировать, что все ImageConsumer получат корректные данные для нескольких кадров. Если ImageConsumer добавлен в этот ImageProducer до установки этого флага, он увидит только снимок данных пикселей, доступных на момент подключения.
- Параметры:
-
animated—true, если изображение является много кадровой анимацией
setFullBufferUpdates
public void setFullBufferUpdates(boolean fullbuffers)
Этот метод следует вызывать сразу после создания MemoryImageSource и до создания изображения с его помощью, чтобы гарантировать, что все ImageConsumer получат корректные подсказки о передаче пикселей.
- Параметры:
-
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.