2017-08-15 91 views
1

我想获取Canvas中特定坐标的颜色。我已经尝试过让使用此代码的快照:什么是读取JavaFX Canvas像素的最佳方式?

WritableImage snap = gc.getCanvas().snapshot(null, null); 
snap.getPixelReader().getArgb(x, y); //This just gets the color without assigning it. 

,但它只是需要太多的时间我的应用程序。我想知道是否有其他方法可以访问我知道坐标的像素的颜色。

回答

4

A Canvas缓冲图指令通过调用GraphicsContext的方法规定。有没有像素要读取,直到Canvas被渲染在后面的pulse中,并且指令缓冲区的内部格式没有暴露在API中。

作为一种替代方案,可以考虑绘制一个BufferedImage,说明here,它允许直接访问图像的像素并通过它的WritableRaster。将以下行添加到此完整example中,以ARGB顺序输出不透明红色的预期值:ffff0000

System.out.println(Integer.toHexString(bi.getRGB(50, 550))); 

image

相关问题