Spec-Zone.ru › OpenJDK 27

Класс MemoryImageSource

java.lang.Object
java.awt.image.MemoryImageSource
Все реализуемые интерфейсы:
ImageProducer
public class MemoryImageSource extends Object implements ImageProducer
Этот класс реализует интерфейс ImageProducer, используя массив для создания значений пикселей изображения. Ниже приведён пример, который вычисляет изображение размером 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 также может управлять изображением в памяти, которое меняется со временем, позволяя создавать анимацию или выполнять пользовательскую отрисовку. Ниже приведён пример настройки источника анимации и оповещения об изменениях данных (адаптировано из 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, int[] pix, int off, int scan)
Создаёт объект ImageProducer, использующий массив целых чисел в стандартной цветовой модели RGB для создания данных объекта Image.
MemoryImageSource(int w, int h, int[] pix, int off, int scan, Hashtable<?,?> props)
Создаёт объект ImageProducer, использующий массив целых чисел в стандартной цветовой модели RGB для создания данных объекта Image.
MemoryImageSource(int w, int h, ColorModel cm, byte[] pix, int off, int scan)
Создаёт объект ImageProducer, использующий массив байтов для создания данных объекта Image.
MemoryImageSource(int w, int h, ColorModel cm, byte[] pix, int off, int scan, Hashtable<?,?> props)
Создаёт объект ImageProducer, использующий массив байтов для создания данных объекта Image.
MemoryImageSource(int w, int h, ColorModel cm, int[] pix, int off, int scan)
Создаёт объект ImageProducer, использующий массив целых чисел для создания данных объекта Image.
MemoryImageSource(int w, int h, ColorModel cm, int[] pix, int off, int scan, Hashtable<?,?> props)
Создаёт объект ImageProducer, использующий массив целых чисел для создания данных объекта Image.

Краткое описание методов

Модификатор и тип Метод Описание
void addConsumer(ImageConsumer ic)
Добавляет ImageConsumer в список потребителей, заинтересованных в данных этого изображения.
boolean isConsumer(ImageConsumer ic)
Проверяет, находится ли ImageConsumer в списке потребителей, в данный момент заинтересованных в данных этого изображения.
void newPixels()
Отправляет новый буфер пикселей всем ImageConsumer, в данный момент заинтересованным в данных этого изображения, и уведомляет их о завершении кадра анимации.
void newPixels(byte[] newpix, ColorModel newmodel, int offset, int scansize)
Заменяет массив байтов, содержащий пиксели этого изображения, новым массивом.
void newPixels(int[] newpix, ColorModel newmodel, int offset, int scansize)
Заменяет массив целых чисел, содержащий пиксели этого изображения, новым массивом.
void newPixels(int x, int y, int w, int h)
Отправляет прямоугольную область буфера пикселей всем 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.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Показывает, равен ли этот объект другому объекту.
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(long timeoutMillis)
Приостанавливает выполнение текущего потока до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного интервала реального времени.
final void wait(long timeoutMillis, int nanos)
Приостанавливает выполнение текущего потока до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного интервала реального времени.

Подробное описание конструкторов

MemoryImageSource

public MemoryImageSource(int w, int h, ColorModel cm, byte[] pix, int off, int scan)
Создаёт объект ImageProducer, использующий массив байтов для создания данных объекта Image.
Параметры:
w — ширина прямоугольника пикселей
h — высота прямоугольника пикселей
cm — указанный ColorModel
pix — массив пикселей
off — смещение в массиве, где следует сохранить первый пиксель
scan — расстояние между строками пикселей в массиве
См. также:
  • Component.createImage(ImageProducer)

MemoryImageSource

public MemoryImageSource(int w, int h, ColorModel cm, byte[] pix, int off, int scan, Hashtable<?,?> props)
Создаёт объект ImageProducer, использующий массив байтов для создания данных объекта Image.
Параметры:
w — ширина прямоугольника пикселей
h — высота прямоугольника пикселей
cm — указанный ColorModel
pix — массив пикселей
off — смещение в массиве, где следует сохранить первый пиксель
scan — расстояние между строками пикселей в массиве
props — список свойств, которые ImageProducer использует для обработки изображения
См. также:
  • Component.createImage(ImageProducer)

MemoryImageSource

public MemoryImageSource(int w, int h, ColorModel cm, int[] pix, int off, int scan)
Создаёт объект ImageProducer, использующий массив целых чисел для создания данных объекта Image.
Параметры:
w — ширина прямоугольника пикселей
h — высота прямоугольника пикселей
cm — указанный ColorModel
pix — массив пикселей
off — смещение в массиве, где следует сохранить первый пиксель
scan — расстояние между строками пикселей в массиве
См. также:
  • Component.createImage(ImageProducer)

MemoryImageSource

public MemoryImageSource(int w, int h, ColorModel cm, int[] pix, int off, int scan, Hashtable<?,?> props)
Создаёт объект ImageProducer, использующий массив целых чисел для создания данных объекта Image.
Параметры:
w — ширина прямоугольника пикселей
h — высота прямоугольника пикселей
cm — указанный ColorModel
pix — массив пикселей
off — смещение в массиве, где следует сохранить первый пиксель
scan — расстояние между строками пикселей в массиве
props — список свойств, которые ImageProducer использует для обработки изображения
См. также:
  • Component.createImage(ImageProducer)

MemoryImageSource

public MemoryImageSource(int w, int h, int[] pix, int off, int scan)
Создаёт объект ImageProducer, использующий массив целых чисел в стандартной цветовой модели RGB для создания данных объекта Image.
Параметры:
w — ширина прямоугольника пикселей
h — высота прямоугольника пикселей
pix — массив пикселей
off — смещение в массиве, где следует сохранить первый пиксель
scan — расстояние между строками пикселей в массиве
См. также:
  • Component.createImage(ImageProducer)
  • ColorModel.getRGBdefault()

MemoryImageSource

public MemoryImageSource(int w, int h, int[] pix, int off, int scan, Hashtable<?,?> props)
Создаёт объект ImageProducer, использующий массив целых чисел в стандартной цветовой модели RGB для создания данных объекта Image.
Параметры:
w — ширина прямоугольника пикселей
h — высота прямоугольника пикселей
pix — массив пикселей
off — смещение в массиве, где следует сохранить первый пиксель
scan — расстояние между строками пикселей в массиве
props — список свойств, которые ImageProducer использует для обработки изображения
См. также:
  • Component.createImage(ImageProducer)
  • ColorModel.getRGBdefault()

Подробное описание методов

addConsumer

public void addConsumer(ImageConsumer ic)
Добавляет ImageConsumer в список потребителей, заинтересованных в данных этого изображения.
Определён в:
addConsumer в интерфейсе ImageProducer
Параметры:
ic — указанный ImageConsumer
Выбрасывает:
NullPointerException — если указанный ImageConsumer равен null
См. также:
  • ImageConsumer

isConsumer

public boolean isConsumer(ImageConsumer ic)
Проверяет, находится ли ImageConsumer в списке потребителей, в данный момент заинтересованных в данных этого изображения.
Определён в:
isConsumer в интерфейсе ImageProducer
Параметры:
ic — указанный ImageConsumer
Возвращает:
true, если ImageConsumer находится в списке; в противном случае — false.
См. также:
  • ImageConsumer

removeConsumer

public void removeConsumer(ImageConsumer ic)
Удаляет ImageConsumer из списка потребителей, заинтересованных в данных этого изображения.
Определён в:
removeConsumer в интерфейсе ImageProducer
Параметры:
ic — указанный ImageConsumer
См. также:
  • ImageConsumer

startProduction

public void startProduction(ImageConsumer ic)
Добавляет ImageConsumer в список потребителей, заинтересованных в данных этого изображения, и немедленно начинает передачу данных изображения через интерфейс ImageConsumer.
Определён в:
startProduction в интерфейсе ImageProducer
Параметры:
ic — указанный ImageConsumer данные изображения через интерфейс ImageConsumer.
См. также:
  • ImageConsumer

requestTopDownLeftRightResend

public void requestTopDownLeftRightResend(ImageConsumer ic)
Запрашивает повторную доставку данных изображения указанному ImageConsumer в порядке сверху вниз и слева направо.
Определён в:
requestTopDownLeftRightResend в интерфейсе ImageProducer
Параметры:
ic — указанный ImageConsumer
См. также:
  • ImageConsumer

setAnimated

public void setAnimated(boolean animated)
Преобразует это изображение в памяти в много кадровую анимацию или статичное изображение с одним кадром в зависимости от параметра animated.

Этот метод следует вызывать сразу после создания MemoryImageSource и до создания изображения с его помощью, чтобы гарантировать, что все ImageConsumer получат корректные данные для нескольких кадров. Если ImageConsumer добавлен в этот ImageProducer до установки этого флага, он увидит только снимок данных пикселей, доступных на момент подключения.

Параметры:
animated — true, если изображение является много кадровой анимацией

setFullBufferUpdates

public void setFullBufferUpdates(boolean fullbuffers)
Задаёт, следует ли всегда обновлять это анимированное изображение в памяти, отправляя полный буфер пикселей при каждом изменении. Этот флаг игнорируется, если флаг анимации не включён методом setAnimated().

Этот метод следует вызывать сразу после создания MemoryImageSource и до создания изображения с его помощью, чтобы гарантировать, что все ImageConsumer получат корректные подсказки о передаче пикселей.

Параметры:
fullbuffers — true, если следует всегда отправлять полный буфер пикселей
См. также:
  • setAnimated(boolean)

newPixels

public void newPixels()
Отправляет новый буфер пикселей всем ImageConsumer, в данный момент заинтересованным в данных этого изображения, и уведомляет их о завершении кадра анимации. Этот метод действует только в том случае, если флаг анимации включён методом setAnimated().
См. также:
  • newPixels(int, int, int, int, boolean)
  • ImageConsumer
  • setAnimated(boolean)

newPixels

public void newPixels(int x, int y, int w, int h)
Отправляет прямоугольную область буфера пикселей всем ImageConsumer, в данный момент заинтересованным в данных этого изображения, и уведомляет их о завершении кадра анимации. Этот метод действует только в том случае, если флаг анимации включён методом setAnimated(). Если флаг обновления всего буфера включён методом 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(). Если флаг обновления всего буфера включён методом setFullBufferUpdates(), параметры прямоугольной области игнорируются и всегда отправляется весь буфер.
Параметры:
x — координата x верхнего левого угла отправляемого прямоугольника пикселей
y — координата y верхнего левого угла отправляемого прямоугольника пикселей
w — ширина отправляемого прямоугольника пикселей
h — высота отправляемого прямоугольника пикселей
framenotify — true, если потребителям следует отправить уведомление SINGLEFRAMEDONE
См. также:
  • ImageConsumer
  • setAnimated(boolean)
  • setFullBufferUpdates(boolean)

newPixels

public void newPixels(byte[] newpix, ColorModel newmodel, int offset, int scansize)
Заменяет массив байтов, содержащий пиксели этого изображения, новым массивом. Если флаг анимации включён методом setAnimated(), новые пиксели немедленно передаются всем 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)
Заменяет массив целых чисел, содержащий пиксели этого изображения, новым массивом. Если флаг анимации включён методом setAnimated(), новые пиксели немедленно передаются всем ImageConsumer, в данный момент заинтересованным в данных этого изображения.
Параметры:
newpix — новый массив пикселей
newmodel — указанный ColorModel
offset — смещение в массиве
scansize — расстояние между строками пикселей в массиве
См. также:
  • newPixels(int, int, int, int, boolean)
  • setAnimated(boolean)

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, включая общие сведения, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API