Numa aplicação que estou desenvolvendo o Drag&Drop esta extremamente pesado. Gostaria de saber se é possivel diminuir a resolução do redesenho.
Basicamente quando se faz um Drag&Drop voce tem um grafico em movimento e o que eu queria saber se é possivel “diminuir os FPS (frames por segundo)” desse movimento para ter um ganho no desempenho
eu utilizo o anti aliasing, que tambem me faz perder em desempenho. existe algoritimos intermediarios de suavização de desenho que pese menos ou só tenho essa opção?
Você pode pôr um timer no seu redesenho, de forma que você, em vez de ficar redesenhando a cada mudança de posição do mouse, só redesenhar depois de 0,5 segundo (por exemplo).
Você pode só redesenhar a ponta do mouse em vez de todas as linhas. Isso é como quando você arrasta uma janela e em vez de mostrar a janela inteira à medida que você a arrasta, só mostra o contorno.
Agora, ao invés de redesenhar o gráfico o tempo todo, simplesmente desenhe a imagem já pronta:
public void paintComponent(Graphics g) {
g.drawImage(imagem, x, y, null);
}
Desenhar BufferedImages na tela é um processo acelerado por hardware, milhares de vezes mais rápido do que desenhar usando o Graphics2D diretamente. Além disso, você não precisará recalcular boa parte do anti-aliasing, pois isso já estará armazenado na imagem.
Por hora é sim. Vou publicar uma série de artigos sobre ele no Ponto V! e então disponibilizar o código pra quem quiser ler.
É que sem um pouco de texto fica um pouquinho complicado entender pq fiz ali as coisas do jeito que fiz.