2015-02-09 4 views
5

Uso la tela nella libreria JavaFX. Ho bisogno di disegnare molti pixel il più velocemente possibile. Io eseguo questo:Il pixel di riempimento più veloce in JavaFX

canvas.getGraphicsContext2D().setFill(color); 
canvas.getGraphicsContext2D().fillRect(x, y, 1, 1); 

Suppongo che sia molto lento. Posso usare il modo più veloce? Forse dovrei usare un altro modo/metodo per riempire un pixel?

+0

Stai disegnando solo pixel sulla tela o stai utilizzando anche altre API Canvas? – jewelsea

+0

Io uso la tela di default: 'javafx.scene.canvas.Canvas' – karoluch

+0

So che usi una tela, ma sto cercando di capire se dovresti. Se tutto quello che stai facendo è manipolare i pixel, non hai bisogno di una tela, una WritableImage sarebbe sufficiente e potrebbe funzionare meglio. Se stai facendo altre cose come disegnare linee sulla tela, allora hai bisogno di una tela. – jewelsea

risposta

7

È possibile utilizzare PixelWriter da un'immagine. Come @jewelsea detto uso canvas.getGraphicsContext2D().getPixelWriter()

Con il PixelWriter è possibile dipingere qualsiasi pixel che si desidera:

pixelWriter.setColor(int x, int y,Color c)

penso che questo sia il modo migliore per solo vernice pixel.

È inoltre possibile annullare la tela e utilizzare un ImageView con WriteAbleImage.

In questo caso è possibile utilizzare writableImage.getPixelWriter() allo stesso modo della Tela.

Se questo è ancora lento, è possibile eseguire pixelWriter.setColor (..) in uno sfondo Thread in modo che l'applicazione non si fermi.

Consulta anche:

canvas performance

Spero che questa risposta ti aiuta.