JPanel にきれいなフラクタルを表示するアルゴリズムがあります。ユーザーがマウスをパネル上に置くたびに、フラクタル パネルにグリッド線の「十字線」を表示できるようにしたいと考えています。
私はこれを、次のようなものに描画するための迅速で簡単な方法で達成しました(fractal
フラクタルJPanelの名前です):
@Override
public void mouseMoved(MouseEvent e) {
Graphics g = fractal.getGraphics();
// <problematic part>
// This is computationally expensive to do. It takes a good 0.2 seconds.
// This must be done to clear 'old' crosshairs
fractal.repaint();
// </problematic part>
Color c = fractal.getColourScheme().getGridlineColour();
g.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), 50));
// Draw crosshairs around the mouse's current point
g.drawLine(e.getX(), 0, e.getX(), fractal.getHeight());
g.drawLine(0, e.getY(), fractal.getWidth(), e.getY());
}
図示のように、古い十字線を消去するには repaint() する必要があります。
JPanel の上に移動するには、Glass Pane のようなものに十字線をペイントする必要があると感じていますが、JPanel は Glass Pane を提供していません。ただし、JRootPane は使用できます。代わりにこれを使用できますか?
PS
現在、フラクタルをピクセルごとに小さなLine2D
s でペイントしています。私は最終的にこれを生成するように変更しますBufferedImage
-その場合、この問題は問題になるでしょうか?