あなたの言うことを聞きます。実際、領域の一部のみを再描画できます。SunのWebサイトの「カスタムペイントの例の実行」で、ドラッグした長方形を描画し、マウスを動かしたり離したりしたときにのみその領域を再ペイントする方法を示す便利な例を見つけました。
これがコードの関連セクションです...
public void mouseDragged(MouseEvent e) {
updateSize(e);
}
public void mouseReleased(MouseEvent e) {
updateSize(e);
}
/*
* Update the size of the current rectangle
* and call repaint. Because currentRect
* always has the same origin, translate it
* if the width or height is negative.
*
* For efficiency (though
* that isn't an issue for this program),
* specify the painting region using arguments
* to the repaint() call.
*
*/
void updateSize(MouseEvent e) {
int x = e.getX();
int y = e.getY();
currentRect.setSize(x - currentRect.x,
y - currentRect.y);
updateDrawableRect(getWidth(), getHeight());
Rectangle totalRepaint = rectToDraw.union(previousRectDrawn);
repaint(totalRepaint.x, totalRepaint.y,
totalRepaint.width, totalRepaint.height);
}
このコードは著作権の対象です(完全なコードと著作権表示についてはこちらをご覧ください)
さらなる例のリストについては、ここを参照してください
正直なところ、FPSでも同様の問題が発生していますが、それは現在のコードが貧弱なことが原因である可能性があります。過去数か月で多くのことを学び、コードをより効率的にすることができるようになりました。うまくいけば、2人以上の「人」が私のグラフィックを遅くしたときにFPSの問題を克服することができます!うーん...私は自分のコードの同じセクションに上記のコードを実装しただけで、他のコードは実装していませんが、ぜひ試してみてください!