3 голоса
 
660 просмотров
17.12.2017 / 12:23  Tygrain

IllegalStateException при попытке получить Graphics на прозрачном изображении

В чем проблема, откуда исключение?
Создаю я картинку, получаю для нее Graphics, рисую, вобщем здесь все нормально.
  1. img = Image.createImage(w, h);
  2. graphics = img.getGraphics();
  3. graphics.setColor(0xf42280);
  4. graphics.fillRect(0, 0, 50, 50);
Пытаюсь повторить тоже самое с прозрачным фоном, только теперь создаю картинку из массива пикселей
  1. int[] pixelArray = new int[w *  h];
  2. for(int i = 0; i < pixelArray.length; i++) pixelArray[i] = 0x00000000;
  3.  
  4. img = Image.createRGBImage(pixelArray, w, h, true);
  5. graphics = img.getGraphics();
  6. graphics.setColor(0xf42280);
  7. graphics.fillRect(0, 0, 50, 50);
и ничего нет, кидает IllegalStateException, Graphics не отдает.
Изм. aNNiMON от 17.12.2017 / 12:35
18.12.2017 / 23:56  aNNiMON
Какая Java ME, ты на год смотрел?
Ответы
 
3 голоса
 
# 17.12.2017 / 12:29  aNNiMON
Обратимся к документации:
Image.getGraphics:
Creates a new Graphics object that renders to this image. This image must be mutable; it is illegal to call this method on an immutable image. The mutability of an image may be tested with the isMutable() method.
Image.createRGBImage:
Creates an immutable image from a sequence of ARGB values, specified as 0xAARRGGBB.
:ps: Если б всё так было просто, в PPM сразу бы работу с прозрачностью сделал.
Изм. aNNiMON от 17.12.2017 / 12:31
17.12.2017 / 12:36  Tygrain
В смысле неизменяемое, а как теперь на нем рисовать?
17.12.2017 / 12:38  aNNiMON
Получай массив ARGB и заполняй пиксели.
17.12.2017 / 12:44  Tygrain
вручную по пикселям?
17.12.2017 / 12:48  aNNiMON
Именно
Всего: 1

Реклама

Мы в соцсетях

tw tg yt gt