Spec-Zone.ru › OpenJDK 24

Класс 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, автор 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);
          }
      }

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

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

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(java.awt.image.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(java.awt.image.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(java.awt.image.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(java.awt.image.ImageProducer)

MemoryImageSource

public MemoryImageSource(int w, int h, int[] pix, int off, int scan)
Создаёт объект ImageProducer, использующий массив целых чисел в стандартной цветовой модели RGB для создания данных для объекта Image.
Параметры:
w - ширина прямоугольника пикселей
h - высота прямоугольника пикселей
pix - массив пикселей
off - смещение в массиве, где хранится первый пиксель
scan - расстояние между строками пикселей в массиве
См. также:
  • Component.createImage(java.awt.image.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(java.awt.image.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 и перед созданием изображения с его помощью, чтобы гарантировать, что все ImageConsumers получат правильные данные мультифрейма. Если ImageConsumer добавляется к этому ImageProducer до установки этого флага, ImageConsumer увидит только снимок данных пикселей, которые были доступны в момент подключения.

Параметры:
animated - true, если изображение представляет собой мультифреймовую анимацию

setFullBufferUpdates

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

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

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

newPixels

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

newPixels

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

© 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

Spec-Zone.ru

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