円をアニメーション化するプログラムは、一度に数百が描画されると滑らかに描画されません。アフィン変換を使用して形状をコピーすることが提案されました。このコードは、graphics2D を使用するようにリファクタリングされていますが、機能しますが、まだ何百もの楕円を埋めているため、パフォーマンスが向上することはありません。アフィン変換を適切に使用して形状を一度塗りつぶしてからコピー/移動する方法は?
public void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(Color.WHITE);
for (int i = 0; i < gameLogic.getParticleArrSize(); i++) {
Graphics2D g2 = (Graphics2D) g;
Color color = new Color(6,6,6);
Ellipse2D oval = new Ellipse2D.Double(
gameLogic.getParticleXCoor(i),
gameLogic.getParticleYCoor(i),
gameLogic.getParticleSize(i),
gameLogic.getParticleSize(i));
g2.setPaint(color);
g2.fill(oval);
g2.translate(15, 15);
g2.fill(oval);
}
}