Изображение и графика Java - PullRequest
0 голосов
/ 03 января 2011

гип, У меня небольшая проблема с графикой. У меня есть изображение ведьмы, я изменяю размер так:

Image BigImage = img.getScaledInstance(115, 154, java.awt.Image.SCALE_SMOOTH);

и я попытался нарисовать его на графике:

g2.drawImage(BigImage, 0, 0, null);

это, к сожалению, не работает. это работает только если я добавлю ImageIcon te = новый ImageIcon (BigImage);

Image BigImage = img.getScaledInstance(115, 154, java.awt.Image.SCALE_SMOOTH);
ImageIcon te = new ImageIcon(BigImage);
g2.drawImage(BigImage, 0, 0, null);

У вас есть идеи, почему? У вас есть другой способ сделать это?

Ответы [ 2 ]

1 голос
/ 03 января 2011

Документация для Image.getScaledInstance () указывается частично ..

Новый объект Image может быть загружен асинхронно , даже если исходное исходное изображение уже полностью загружено.

(мой акцент)

Один из способов исправить проблему - добавить изображение в MediaTracker, чтобы убедиться, что оно загружено перед рендерингом. Но самое главное, не делайте ничего из этого внутри метода paint () / paintComponent (), как я подозреваю, учитывая фрагмент кода. Реализация ImageIcon, вероятно, замедляла выполнение, достаточное для загрузки изображения.

Еще один совет, который я предлагаю, заключается в том, что вы получите лучшую помощь раньше, если вы отправите SSCCE . Это особенно полезно для примеров на основе изображений, поскольку, если бы вы имели горячую ссылку на изображение, доступное в сети, мы могли бы видеть, насколько велико было изображение, которое масштабировалось. ;)

1 голос
/ 03 января 2011

Я не могу сейчас сказать, почему ваш код не работает, но вы можете напрямую нарисовать масштабированный экземпляр изображения, используя этот метод drawImage . У меня это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...