Я новичок в графике Java, поэтому мало объяснений было бы полезно.Java Doublebuffer - Почему мы очищаем открытую область?
Я нашел этот фрагмент на Java двойной буферизации, в котором я не понимаю, почему мы очищаем открытую область, которую мы только что загрузили графикой.
Похоже, мы загрузили его графикой, и сразу после этого мы его очистили? Но почему? (3-й кодовый блок)
Любое объяснение о нем и за его пределами было бы полезно.
class DoubleBufferedCanvas extends Canvas {
public void update(Graphics g) {
Graphics offgc;
Image offscreen = null;
Dimension d = size();
// create the offscreen buffer and associated Graphics
offscreen = createImage(d.width, d.height);
offgc = offscreen.getGraphics();
// clear the exposed area ----------- T H I S B L O C K --------
offgc.setColor(getBackground());
offgc.fillRect(0, 0, d.width, d.height);
offgc.setColor(getForeground());
// do normal redraw
paint(offgc);
// transfer offscreen to window
g.drawImage(offscreen, 0, 0, this);
}
}
спасибо за объяснение, но я до сих пор не ясно, о точке: я думаю, offgc.fillRect (0, 0, d.width, d.height); работает, как будто мы заполняем весь прямоугольник указанным цветом, но не содержимым графических изображений. они остаются нетронутыми (вид заполняет фон с определенным цветом). Я прав? и что нужно использовать offgc.fillRect (0, 0, d.width, d.height); – nikoloz
Нет, не совсем. «Графика» - это просто средство, позволяющее рисовать пиксели цели (в данном случае изображение и экран), это всего лишь объединенный API. Поэтому, когда вы вызываете 'fillRect', на самом деле это рисование/заполнение пикселей в целевом объекте. В этом цель состоит в том, чтобы сделать изображение заполненным цветом фона. Как я уже сказал, я считаю, что 'createImage' создает изображение с черным фоном, которое не особенно красиво – MadProgrammer
ok. поэтому я создаю пустое изображение с размером (100px; 100px), все из 1000 пикселей которого являются «свободными». затем я вызываю getGraphics на этом изображении, -> рисунки рисуются на нем, заполняя («занимая») (например) 100 пикселей из 1000. next - если я использую fillRect, оставшиеся 900 пикселей будут заполнены указанным цветом. – nikoloz