760e358a

Двойная буферизация с помощью класса image



Листинг 15.10. Двойная буферизация с помощью класса image

public void update(Graphics g){

int w = getSize().width, h = getSize().height;

// Создаем изображение-буфер в оперативной памяти

Image offlmg = createlmage(w, h);



// Получаем его графический контекст 

Graphics offGr = offImg.getGraphics();

// Меняем текущий цвет буфера на цвет фона 

offGr.setColor(getBackground());

//и заполняем им окно компонента, очищая буфер 

offGr.fillRect(0, 0, w, h);

// Восстанавливаем текущий цвет буфера 

offGr.setColor(getForeground());

// Для листинга 15.9 выводим в контекст изображение 

offGr.drawlmage(img[count % 10], 0, 0, this);

// Рисуем в графическом контексте буфера

// (необязательное действие) 

paint(offGr);

// Выводим изображение-буфер на экран

// (можно перенести в метод paint()) 

g.drawlmage(offlmg, 0, 0, this);
}

// Метод paint() необязателен 

public void paint(Graphics g)J update(g);
}



Содержание раздела