JavaFx 图像视图

JavaFx ImageView

如何清除 ImageView 对象的内容,以便我可以使用 PixelWriter 对象重绘图像?

谢谢

例如

ImageView tmpView = new ImageView();
WritableImage writableImage = new WritableImage(width, height);
PixelWriter pixelWriter = writableImage.getPixelWriter();
...
tmpView.setImage(writableImage);
...
//draw the first image
...
//clear the contents of tmpView  
//???

//redraw imgView
pixelWriter.setColor(x, y, color);

在argb颜色模型中,0表示透明。由于 new int[n] 创建了一个长度为 nint 数组,所有值都初始化为 0,以下将使所有像素透明:

pixelWriter.setPixels(0, 0, width, height, PixelFormat.getIntArgbInstance(),
    new int[width*height],  0, width);

如果你希望所有的像素都是白色的(例如),那么你可以用适当的值填充数组:

int[] white = new int[width*height];
Arrays.fill(white, 0xffffffff);
pixelWriter.setPixels(0, 0, width, height, PixelFormat.getIntArgbInstance(),
    white, 0, width);

另一种选择是创建一个新的 WritableImage 并将其设置在图像视图中。

在不知道原始任务的任何进一步细节的情况下,我会在这里使用 Canvas 而不是 Image/ImageView。使用 Canvas 的绘图功能,您可以轻松清除该区域,而不必创建可能必须用颜色值填充的巨大数组。