Класс 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() | Отправляет новый буфер пикселей всем 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) | Преобразует это изображение в памяти в анимацию с несколькими кадрами или статическое изображение с одним кадром в зависимости от параметра анимации. |
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
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, 2020, 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://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/image/MemoryImageSource.html