读取JavaFX画布像素的最佳方式是什么?
我想获得读取JavaFX画布像素的最佳方式是什么?,java,canvas,javafx,colors,Java,Canvas,Javafx,Colors,我想获得画布中特定坐标的颜色。我已尝试使用以下代码获取快照: WritableImage snap = gc.getCanvas().snapshot(null, null); snap.getPixelReader().getArgb(x, y); //This just gets the color without assigning it. 但我的申请时间太长了。我想知道是否有其他方法可以访问我知道坐标的像素的颜色。a通过调用a的方法来缓冲指定的绘图指令。在以后渲染画布之前,没有可读取的
画布中特定坐标的颜色。我已尝试使用以下代码获取快照:
WritableImage snap = gc.getCanvas().snapshot(null, null);
snap.getPixelReader().getArgb(x, y); //This just gets the color without assigning it.
但我的申请时间太长了。我想知道是否有其他方法可以访问我知道坐标的像素的颜色。a通过调用a的方法来缓冲指定的绘图指令。在以后渲染画布
之前,没有可读取的像素,并且指令缓冲区的内部格式未在API中公开
作为一种选择,考虑绘制成A,图示,它允许直接访问图像像素并通过其访问。将以下行添加到此完成项中,以ARGB顺序输出不透明红色的预期值:
ffff0000
System.out.println(Integer.toHexString(bi.getRGB(50, 550)));
请在代码中添加说明,解释如何解决问题,或添加注释
public class Pixel
{
private static final SnapshotParameters SP = new SnapshotParameters();
private static final WritableImage WI = new WritableImage(1, 1);
private static final PixelReader PR = WI.getPixelReader();
private Pixel()
{
}
public static int getArgb(Node n, double x, double y)
{
synchronized (WI)
{
Rectangle2D r = new Rectangle2D(x, y, 1, 1);
SP.setViewport(r);
n.snapshot(SP, WI);
return PR.getArgb(0, 0);
}
}
public static Color getColor(Node n, double x, double y)
{
synchronized (WI)
{
Rectangle2D r = new Rectangle2D(x, y, 1, 1);
SP.setViewport(r);
n.snapshot(SP, WI);
return PR.getColor(0, 0);
}
}
}