2

Javaでカーソルの周りに黄色い円を作る方法を見つけようとしています。問題は、(明らかに) 画面を記録するスクリーン レコーダーがあることです。Google で「Java でカーソルの周りに黄色い円」というキーワードを使用すると、MAC、WM、およびその他のアプリケーションでカーソルの周りに黄色い円を追加する方法しかわかりませんが、ユーザーのコンピューターで Java でそれを行う方法はわかりません。アプリケーションが起動します。

既存の画像を使用せずにどのように行うことができますか? 不透明度のある単純な黄色の円を描くのが最も簡単で、画面上でマウスに追従します。また、ユーザーがマウスボタンをクリックしたときに消えて再び現れるようにすることができれば、それは素晴らしいことです.

4

2 に答える 2

2

MouseMotionListenerをコンポーネントにアタッチすることでこれを行うことは可能ですが、希望どおりに機能させるには少し手間がかかります。

私はこのようなものから始めます:

private static final double RADIUS    = 15.0;
private static final double DIAMETER  = 2.0 * RADIUS;
private static final Color  XOR_COLOR = Color.yellow;

private static Shape m_circle = null;

@Override
public void mouseMoved(MouseEvent e)
{
    Graphics2D g2     = (Graphics2D) getGraphics();
    Point      p      = e.getPoint();
    Shape      circle = new Ellipse2D.Double(p.getX() - RADIUS, p.getY() - RADIUS, DIAMETER, DIAMETER);

    clearCircle(g2);

    g2.setXORMode(XOR_COLOR);
    g2.draw(circle);
    g2.setPaintMode();

    m_circle = circle;
}

private void clearCircle(Graphics2D g2)
{
    if (m_circle != null)
    {
        g2.setXORMode(XOR_COLOR);
        g2.draw(m_circle);
        g2.setPaintMode();

        m_circle = null;
    }
}

また、MouseListenerを追加してリッスンできるmouseExitedイベントで古いサークルがクリアされていることを確認する必要があります。これには、ユーザーのマウスクリックで非表示/再表示にするために必要なmousePressed / mouseReleased/mouseClickedイベントもあります。

XORを使用すると、同じ形状を同じ色とスタイルで塗り直すことで画面を復元するのが非常に簡単であるため便利ですが、それはあなたが求めていたものではありません。円を描き込もうとしている領域の画像をキャプチャすることで、画面を修復することができます。円を新しい位置にペイントする前に、損傷した領域を再ペイントすることで、画面から円を削除できます。

于 2012-08-12T18:45:16.703 に答える
-1

既存のマウス ポインターの周りに円を追加することはできません。マウス ポインタを完全なイメージにのみ設定できます。

于 2012-05-24T08:04:16.510 に答える