Java 2D графика — приоритет элементов в paintComponent

#java #graphics #2d #paintcomponent #java-2d

#java #графика #2d #компонент рисования #java-2d

Вопрос:

у меня простой вопрос. Я новичок в Java 2D API, поэтому мой вопрос:

Есть ли возможность вручную установить приоритет чего-либо, что рисуется в paintComponent() ?

Ответ №1:

Первое, что вы нарисуете, будет самое дальнее заднее. Итак

 public void paintComponent(Graphics g) {
    g.drawRect(10, 10, 80, 30); // Drawn in back
    g.drawRect(20, 20, 70, 40); // Drawn in middle
    g.drawRect(10, 10, 10, 10); // Drawn in front
    ...
}
 

Комментарии:

1. Я хочу вызвать функцию, которая удалит все с экрана компонента рисования, а затем начнет добавлять обратно. Однако, когда я использую функцию clearRect(), она очищает экран, но я не собираюсь это закрашивать.

2. Вы вызываете clearRect() перед вызовом drawRect() правильно?

Ответ №2:

Если вы скажете Java сначала нарисовать что-то, оно будет нарисовано первым, и все, что вы нарисуете поверх этого, будет нарисовано поверх первого, что вы нарисовали.

Ответ №3:

Вы не можете указать приоритет, но вы можете указать порядок (в коде порядка), в котором рисуется каждый объект. Вот один из примеров.

 public void paint(Graphics screen) {
    sortByDepth(screen);
    backFaceCulling(screen);
    applyProjection(screen);
    drawCube(screen);
}
 

Вам может очень помочь следующая книга: Введение в компьютерную графику с использованием Java 2D и 3D. Кроме того, вы можете захотеть увидеть определение видимой поверхности, если хотите нарисовать что-то подобное:

Здесь перекрывающиеся полигоны

См . также: