Класс PixelBuffer<T extends Buffer>
- Параметры типа:
-
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);
- С:
- 13
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
PixelBuffer |
Создает PixelBuffer с помощью указанного Buffer и PixelFormat. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
T |
getBuffer() |
Возвращает buffer этого PixelBuffer. |
int |
getHeight() |
Возвращает height этого PixelBuffer. |
PixelFormat |
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 требует IntBuffer с минимальной емкостью width * height, а PixelFormat.Type.BYTE_BGRA_PRE требует ByteBuffer с минимальной емкостью 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 Thread.
Пример кода, показывающий, как использовать этот метод:
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 Thread. -
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.