Pergunta

Estou escrevendo um gerador de mapa de calor personalizado. Estou me perguntando qual é a maneira mais rápida de desenhar caixas (até cerca de 1 milhão) em Java. A maioria das perguntas que encontrei concentrou -se em imagens dinâmicas (como nos jogos), e estou me perguntando se há um caminho melhor para obter imagens estáticas. Tentei usar o swing (através de um gridlayout e adicionar uma tela colorida a cada caixa), desenhando diretamente no painel com o Graphics2D e também usando as bibliotecas de processamento. Embora o processamento seja muito rápido e gera uma imagem limpa, a janela parece ter problemas para mantê -la; Ele gera diferentes partes da imagem sempre que você minimizar, mover as janelas etc.

Ouvi falar do OpenGL, mas nunca o toquei e queria algum feedback sobre se isso (ou algo mais) seria uma abordagem melhor antes de investir tempo nele.

Foi útil?

Solução

Para imagens estáticas, eu as pinto para um bufferImage (BI) e, em seguida, desenho isso via Graphics2D. Eu mantenho um booleano que me diz se o BI está atualizado. Dessa forma, eu só tenho o custo de pintura caro uma vez. Se você quiser ser sofisticado, pode escalar o BI para lidar com pequenas redimensionamentos. Para um grande redimensionamento, você provavelmente desejará repintar o BI para não introduzir artefatos. Também é útil para sobreposição de dados (como pêlos cruzados, o valor do cursor, etc.), pois você está apenas pintando o BI e os dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top