Класс PixelBuffer<T extends Buffer>
- Type Parameters:
-
T- тип данныхBuffer, хранящих пиксельную информацию. Поддерживаются толькоByteBufferиIntBuffer.
public class PixelBuffer<T extends Buffer> extends Object
PixelBuffer представляет пиксельные данные, сформированные из java.nio.Buffer, предоставленного приложением. WritableImage может напрямую использовать этот PixelBuffer без копирования пиксельных данных. Этот PixelBuffer может быть совместно использован несколькими WritableImage. Пиксельные данные должны храниться либо в IntBuffer с помощью PixelFormat типа INT_ARGB_PRE, либо в ByteBuffer с помощью PixelFormat типа BYTE_BGRA_PRE. При обновлении Buffer с помощью метода PixelBuffer.updateBuffer, все WritableImage, созданные с использованием этого PixelBuffer, перерисовываются. Пример кода создания PixelBuffer:
// Creating a PixelBuffer using BYTE_BGRA_PRE pixel format.
ByteBuffer byteBuffer = ByteBuffer.allocateDirect(width * height * 4);
PixelFormat<ByteBuffer> pixelFormat = PixelFormat.getByteBgraPreInstance();
PixelBuffer<ByteBuffer> pixelBuffer = new PixelBuffer<>(width, height, byteBuffer, pixelFormat);
Image img = new WritableImage(pixelBuffer);
// Creating a PixelBuffer using INT_ARGB_PRE pixel format.
IntBuffer intBuffer = IntBuffer.allocate(width * height);
PixelFormat<IntBuffer> pixelFormat = PixelFormat.getIntArgbPreInstance();
PixelBuffer<IntBuffer> pixelBuffer = new PixelBuffer<>(width, height, intBuffer, pixelFormat);
Image img = new WritableImage(pixelBuffer);
- Since:
- 13
- See Also:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
PixelBuffer |
Создает PixelBuffer с использованием указанных Buffer и PixelFormat. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
T |
getBuffer() |
Возвращает buffer этого PixelBuffer. |
int |
getHeight() |
Возвращает height этого PixelBuffer. |
PixelFormat<T> |
getPixelFormat() |
Возвращает PixelFormat этого PixelBuffer. |
int |
getWidth() |
Возвращает width этого PixelBuffer. |
void |
updateBuffer |
Вызывает указанный метод Callback и обновляет область изменения всех WritableImage, созданных с использованием этого PixelBuffer. |
Подробное описание конструкторов
PixelBuffer
public PixelBuffer(int width, int height, T buffer, PixelFormat<T> pixelFormat)
PixelBuffer) с указанными Buffer и PixelFormat. Тип указанного PixelFormat должен быть либо PixelFormat.Type.INT_ARGB_PRE, либо PixelFormat.Type.BYTE_BGRA_PRE. Конструктор не выделяет память для хранения данных пикселей. Приложение должно предоставить буфер с достаточной памятью для сочетания размеров (width, height) и типа PixelFormat. Для PixelFormat.Type.INT_ARGB_PRE требуется буфер с минимальной ёмкостью width * height, а для PixelFormat.Type.BYTE_BGRA_PRE — буфер с минимальной ёмкостью width * height * 4.
- Параметры:
-
width- ширина в пикселях этогоPixelBuffer -
height- высота в пикселях этогоPixelBuffer -
buffer- буфер, хранящий данные пикселей -
pixelFormat- формат пикселей вbuffer - Исключения:
-
IllegalArgumentException- если либоwidth, либоheightотрицательны или равны нулю, или если типpixelFormatне поддерживается, или если уbufferнедостаточно памяти, или если типbufferиpixelFormatне совпадают -
NullPointerException- еслиbufferилиpixelFormatравныnull
Подробное описание методов
getBuffer
public T getBuffer()
buffer) этого буфера пикселей (PixelBuffer).- Возвращает:
- буфер (
buffer) этого буфера пикселей (PixelBuffer)
getWidth
public int getWidth()
width) этого буфера пикселей (PixelBuffer).- Возвращает:
- ширину (
width) этого буфера пикселей (PixelBuffer)
getHeight
public int getHeight()
height) этого буфера пикселей (PixelBuffer).- Возвращает:
- высоту (
height) этого буфера пикселей (PixelBuffer)
getPixelFormat
public PixelFormat<T> getPixelFormat()
PixelFormat) этого буфера пикселей (PixelBuffer).- Возвращает:
- формат пикселей (
PixelFormat) этого буфера пикселей (PixelBuffer)
updateBuffer
public void updateBuffer(Callback<PixelBuffer<T>,Rectangle2D> callback)
Callback и обновляет грязную область всех буферов пикселей (WritableImage), которые были созданы с помощью этого буфера пикселей (PixelBuffer). Метод Callback должен обновить буфер и вернуть Rectangle2D, который охватывает грязную область, или вернуть null, чтобы указать, что весь буфер грязный. Этот метод должен вызываться в потоке JavaFX Application.
Пример кода, демонстрирующий использование этого метода:
Callback<PixelBuffer<ByteBuffer>, Rectangle2D> callback = pixelBuffer -> {
ByteBuffer buffer = pixelBuffer.getBuffer();
// Update the buffer.
return new Rectangle2D(x, y, dirtyWidth, dirtyHeight);
};
pixelBuffer.updateBuffer(callback);
- Параметры:
-
callback- методCallback, который обновляет буфер - Исключения:
-
IllegalStateException- если этот метод вызывается в потоке, отличном от потока JavaFX Application. -
NullPointerException- еслиcallbackявляетсяnull
© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.