Spec-Zone .ru
спецификации, руководства, описания, API
След: Премия
Урок: полноэкранный Монопольный API Режима
Пассивный по сравнению с Активным Рендерингом
Домашняя страница > Премия > Полноэкранный Монопольный API Режима

Пассивный по сравнению с Активным Рендерингом

Как упомянуто прежде, большинство полноэкранных приложений обычно функционирует лучше, если они у руля во время рисунка. В традиционных оконных приложениях GUI вопрос того, когда нарисовать, обычно обрабатывается операционной системой. Работая в оконной среде, это имеет совершенный смысл. Оконное приложение не знает, когда пользователь собирается переместить, изменить размеры, представить, или покрыть приложение другим окном, пока это фактически не происходит. В приложении GUI Java операционная система поставляет событие краски AWT, который выясняет, какие потребности быть нарисованным, создает объект java.awt.Graphics с соответствующей областью отсечения, затем вызывает метод paint с тем, которому возражает Graphics:

// Traditional GUI Application paint method:
// This can be called at any time, usually 
// from the event dispatch thread
public void paint(Graphics g) {
    // Use g to draw my Component
}

Это иногда упоминается как пассивный рендеринг. Как можно предположить, такая система подвергается большому количеству издержек, очень к раздражению из-за многих чувствительных к производительности AWT и программистов Swing.

Когда в полноэкранном монопольном режиме, Вы не должны волноваться больше об окне, изменяемом, перемещенном, представленном, или закрытый (если Вы не проигнорировали мое предложение, чтобы выключить изменение размеров). Вместо этого окно приложения оттягивается непосредственно на экран (активный рендеринг). Это упрощает рисование вполне немного, так как Вы никогда не должны волноваться о событиях краски. Фактически, события краски, поставленные операционной системой, могут даже быть поставлены в несоответствующие или непредсказуемые времена когда в полноэкранном монопольном режиме.

Вместо того, чтобы положиться на метод paint в полноэкранном монопольном режиме, код для прорисовки обычно более соответственно делается в цикле рендеринга:

public void myRenderingLoop() {
    while (!done) {
        Graphics myGraphics = getPaintGraphics();
        // Draw as appropriate using myGraphics
        myGraphics.dispose();
    }
}

Такой цикл рендеринга может сделанный от любого потока, или его собственный поток помощника или как часть основного потока приложения.

Программирование Подсказок

Некоторые подсказки об использовании активного рендеринга:


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Режим отображения
Следующая страница: Двойная буферизация и Зеркальное отражение Страницы