java.lang.Object
javafx.scene.image.PixelBuffer<T>
- Type Parameters:
- T- the type of- Bufferthat stores the pixel data. Only- ByteBufferand- IntBufferare supported.
public class PixelBuffer<T extends Buffer> extends Object
The 
PixelBuffer class represents pixel data that is constructed from
 a java.nio.Buffer supplied by the application.
 A WritableImage can use this PixelBuffer directly without copying the pixel data.
 This PixelBuffer can be shared among multiple WritableImages.
 Pixel data should be stored either in an IntBuffer using a PixelFormat of type
 INT_ARGB_PRE or in a ByteBuffer using a PixelFormat of type BYTE_BGRA_PRE.
 When the Buffer is updated using the PixelBuffer.updateBuffer method,
 all WritableImages that were created using this PixelBuffer are redrawn.
 
 Example code that shows how to create a 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:
- WritableImage(PixelBuffer)
- 
Constructor SummaryConstructors Constructor Description PixelBuffer(int width, int height, T buffer, PixelFormat<T> pixelFormat)Constructs aPixelBufferusing the specifiedBufferandPixelFormat.
- 
Method SummaryModifier and Type Method Description TgetBuffer()Returns thebufferof thisPixelBuffer.intgetHeight()Returns theheightof thisPixelBuffer.PixelFormat<T>getPixelFormat()Returns thePixelFormatof thisPixelBuffer.intgetWidth()Returns thewidthof thisPixelBuffer.voidupdateBuffer(Callback<PixelBuffer<T>,Rectangle2D> callback)Invokes the specifiedCallbackmethod and updates the dirty region of allWritableImages that were created using thisPixelBuffer.
- 
Constructor Details- 
PixelBufferConstructs aPixelBufferusing the specifiedBufferandPixelFormat. The type of the specifiedPixelFormatmust be eitherPixelFormat.Type.INT_ARGB_PREorPixelFormat.Type.BYTE_BGRA_PRE.The constructor does not allocate memory to store the pixel data. The application must provide a buffer with sufficient memory for the combination of dimensions (width, height)and the type ofPixelFormat. ThePixelFormat.Type.INT_ARGB_PRErequires anIntBufferwith minimum capacity ofwidth * height, and thePixelFormat.Type.BYTE_BGRA_PRErequires aByteBufferwith minimum capacity ofwidth * height * 4.- Parameters:
- width- width in pixels of this- PixelBuffer
- height- height in pixels of this- PixelBuffer
- buffer- the buffer that stores the pixel data
- pixelFormat- the format of pixels in the- buffer
- Throws:
- IllegalArgumentException- if either- widthor- heightis negative or zero, or if the type of- pixelFormatis unsupported, or if- bufferdoes not have sufficient memory, or if the type of- bufferand- pixelFormatdo not match
- NullPointerException- if- bufferor- pixelFormatis- null
 
 
- 
- 
Method Details- 
getBufferReturns thebufferof thisPixelBuffer.- Returns:
- the bufferof thisPixelBuffer
 
- 
getWidthpublic int getWidth()Returns thewidthof thisPixelBuffer.- Returns:
- the widthof thisPixelBuffer
 
- 
getHeightpublic int getHeight()Returns theheightof thisPixelBuffer.- Returns:
- the heightof thisPixelBuffer
 
- 
getPixelFormatReturns thePixelFormatof thisPixelBuffer.- Returns:
- the PixelFormatof thisPixelBuffer
 
- 
updateBufferInvokes the specifiedCallbackmethod and updates the dirty region of allWritableImages that were created using thisPixelBuffer. TheCallbackmethod is expected to update the buffer and return aRectangle2Dthat encloses the dirty region, or returnnullto indicate that the entire buffer is dirty.This method must be called on the JavaFX Application Thread. Example code that shows how to use this method: Callback<PixelBuffer<ByteBuffer>, Rectangle2D> callback = pixelBuffer -> { ByteBuffer buffer = pixelBuffer.getBuffer(); // Update the buffer. return new Rectangle2D(x, y, dirtyWidth, dirtyHeight); }; pixelBuffer.updateBuffer(callback);- Parameters:
- callback- the- Callbackmethod that updates the buffer
- Throws:
- IllegalStateException- if this method is called on a thread other than the JavaFX Application Thread.
- NullPointerException- if- callbackis- null
 
 
-