2014-06-12 2 views
0

В настоящее время я выполняю проект, который требует, чтобы я рисовал на экране большое количество изображений (100+). Первоначальное разрешение каждого изображения составляет 20 * 20, и я масштабирую их до 80 * 80 с ближайшим соседом, прежде чем рисовать их.Рисование Увеличенные изображения

В настоящее время я использую AffineTransform, чтобы масштабировать их при инициализации программы и перерисовывать увеличенные изображения в каждом кадре в разных положениях.

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

В псевдокоде:

Image image; //loaded from 20*20 png file 

public void init(){ 
    image = resize(image, 80, 80); 
} 

public void repaint(Graphics g){ 
    g.drawImage(image, 0, 0, null); 
} 

Я также попытался:

Image image; 

public void repaint(Graphics g){ 
    ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR); 
    g.drawImage(image, 0, 0, 80, 80, null); 
} 

Есть ли решение моей проблемы?

+4

Кэш всех масштабированных изображений ** один раз **, затем нарисуйте эти изображения – BitNinja

ответ