Класс 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,
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. |
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. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
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.