Класс 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() |
Отправляет весь новый буфер пикселей всем ImageConsumers, которые в данный момент заинтересованы в данных этого изображения, и уведомляет их о завершении кадра анимации. |
void |
newPixels |
Изменяет массив байтов для хранения пикселей этого изображения. |
void |
newPixels |
Изменяет массив целых чисел для хранения пикселей этого изображения. |
void |
newPixels |
Отправляет прямоугольный фрагмент буфера пикселей всем ImageConsumers, которые в данный момент заинтересованы в данных этого изображения, и уведомляет их о завершении кадра анимации. |
void |
newPixels |
Отправляет прямоугольный фрагмент буфера пикселей всем ImageConsumers, которые в данный момент заинтересованы в данных этого изображения. |
void |
removeConsumer |
Удаляет ImageConsumer из списка потребителей, заинтересованных в данных этого изображения. |
void |
requestTopDownLeftRightResend |
Запрашивает, чтобы данные изображения были переданы ещё раз для данного ImageConsumer в порядке слева-направо, сверху-вниз. |
void |
setAnimated |
Преобразует это изображение в памяти в анимацию из нескольких кадров или статическое изображение из одного кадра в зависимости от параметра анимации. |
void |
setFullBufferUpdates |
Указывает, всегда ли это анимированное изображение в памяти должно обновляться путём отправки полного буфера пикселей при каждом изменении. |
void |
startProduction |
Добавляет ImageConsumer в список потребителей, заинтересованных в данных этого изображения, и немедленно запускает передачу данных изображения через интерфейс ImageConsumer. |
Подробное описание конструкторов
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 и перед созданием изображения с его помощью, чтобы гарантировать, что все ImageConsumers получат правильные данные многокадровой анимации. Если ImageConsumer добавляется к этому ImageProducer до установки этого флага, то этот ImageConsumer увидит только моментальный снимок данных пикселей, которые были доступны при подключении.
- Параметры:
-
animated-trueесли изображение является анимацией из нескольких кадров
setFullBufferUpdates
public void setFullBufferUpdates(boolean fullbuffers)
Этот метод следует вызывать сразу после создания MemoryImageSource и перед созданием изображения с его помощью, чтобы гарантировать, что все ImageConsumers получат правильные подсказки по передаче пикселей.
- Параметры:
-
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, 2021, 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/17/docs/api/java.desktop/java/awt/image/MemoryImageSource.html