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]
创建了一个长度为 n
的 int
数组,所有值都初始化为 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 的绘图功能,您可以轻松清除该区域,而不必创建可能必须用颜色值填充的巨大数组。
如何清除 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]
创建了一个长度为 n
的 int
数组,所有值都初始化为 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 的绘图功能,您可以轻松清除该区域,而不必创建可能必须用颜色值填充的巨大数组。