В чем "секрет" рисования графики в окне?
Графика сама по себе является просто абстрактным классом. Как звонит 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
событие для рисования прямоугольника на экране.