2015-06-04 4 views
-2

Как очистить содержимое объекта ImageView, чтобы я мог использовать объект PixelWriter для перерисовки изображения?JavaFx ImageView

Thanks

e.g.

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); 
+0

Почему бы просто не создать новый 'WritableImage' и установить его в' ImageView'? –

+0

Большое спасибо! – Toebi

ответ

0

В ARGB цветовой модели, 0 представляет собой прозрачный. Поскольку new int[n] создает int массив длины n со всеми значениями инициализируются в 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 и установить его в представлении изображения.

0

Не зная каких-либо дополнительных сведений о исходной задаче, я бы использовал здесь Canvas вместо Image/ImageView. Благодаря возможности рисования Canvas вы можете легко очистить область, не создавая, возможно, огромные массивы, которые должны быть заполнены значениями цвета.

Смежные вопросы