рисовать графику2D за кадром? затем принять участие и показать на экране - PullRequest
0 голосов
/ 28 октября 2011

Я хочу нарисовать компонент graphics2D вне экрана, затем принять его и показать на экране для обновления изображения в реальном времени, поэтому буферизованное изображение занимает много времени.

Ответы [ 2 ]

1 голос
/ 14 января 2012

Используйте setDoubleBuffered( true ); в вашей JPanel. Это больно за кадром, и когда он закончит рисовать за кадром, он будет показан на JPanel. При использовании этого вы больше не будете получать черные / неокрашенные рамки.

1 голос
/ 28 октября 2011

Посмотрите на BufferCapabilities (и связанные с ним классы), а также графическую концепцию MultipleBuffering .

Кроме того, это, вероятно, не BufferedImage, что медленно, этокак конвейер рендеринга использует (или не использует) доступное аппаратное ускорение.

Если, случайно, вы создаете игру или другое приложение, для которого требуется высокоскоростной рендеринг, использующий преимущества аппаратного обеспеченияускорение в Java, вы бы хорошо начать с библиотеки, которая позаботится об этих деталях для вас, например Slick2D .

Еще одна приятная вещь в Slick2D - это то, что он кроссплатформенный и заботится о деталях производительности рендеринга, потому что реальный конвейер рендеринга меняется между платформами, версия JVMs, и аппаратное обеспечение (в зависимости от доступных функций, доступных в Java), и это просто много деталей и проб / ошибок, которые вы не хотите выяснять самостоятельно.БОЛЬШОЙ приемник времени.

LWGJL (библиотека, которая обеспечивает графическую производительность Slick2D) в основном полностью обходит Java2D, чтобы включить это.Там есть интересное чтиво, если вы хотите глубоко копать.

...