В чем "секрет" рисования графики в окне?

Графика сама по себе является просто абстрактным классом. Как звонит g.drawImage(Image img, tx, null) или что-то подобное на самом деле рисует в окне? Я посмотрел немного, и я понял, что, возможно, что-то происходит в случае java.awt.Component? Это правильно? Я не знаю.

Моя главная причина в том, что я хочу сделать свой собственный Graphics контекст называется Graphics3D, Мой растеризатор будет использовать это, а затем из Graphics3D Контекст вы можете рисовать и манипулировать 3D-объектами. Даже если бы я мог просто унаследовать Graphics в мой Rasterizer Я бы не знал, что делать.

1 ответ

Решение

java.awt.Component это суперкласс любого класса, который можно нарисовать на экране.

В этом классе вы можете увидеть, как на самом деле нарисован пиксель на экране.
В этом классе есть метод, т.е. public void repaint(long tm, int x, int y, int width, int height), В этой функции вы должны взглянуть на 3403-ю строку, чтобы понять, как она работает.

Это создает PaintEvent для этого.PaintEvent e = new PaintEvent(this, PaintEvent.UPDATE, new Rectangle(x, y, width, height)) где конструктор для PaintEvent PaintEvent(Component source, int id, Rectangle updateRect),

Есть еще одна строчка Toolkit.getEventQueue().postEvent(e),
Инструментарий получает EventQueue системы, и добавляет PaintEvent внутрь.
EventQueue отслеживать все события в очереди и запускать их соответственно.
PaintEvent событие для рисования прямоугольника на экране.

Другие вопросы по тегам