我正在尝试在Java中如何在光标周围画一个黄色圆圈。问题是,我们有一个屏幕录像机,它(显然)可以记录屏幕。在Google上使用关键字“Java中光标周围的黄色圆圈”只会带我到如何在MAC、WM和其他应用程序上添加光标周围的黄色圆圈,而不是如何在应用程序启动时在用户计算机上的Java中添加黄色圆圈。
如何在不使用现有镜像的情况下完成此操作?绘制一个带有一些不透明度的简单的黄色圆圈是最容易做的事情,让它跟随屏幕上的鼠标。而且,如果有可能让它消失,并在用户单击鼠标按钮时重新出现,那就太棒了。
发布于 2012-05-24 16:04:17
无法在现有鼠标指针周围添加圆圈。您只能将鼠标指针设置为完整的图像。
发布于 2012-08-13 02:45:17
可以通过将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;
}
}还需要确保在mouseExited事件上清除旧的圆圈,您可以通过添加MouseListener来侦听该事件。它还具有mousePressed/mouseReleased/mouseClicked事件,您需要这些事件使其在用户单击鼠标时消失/重新出现。
使用XOR很方便,因为通过用相同的颜色和样式重新绘制相同的形状来恢复屏幕非常容易,但这并不完全符合您的要求。可以通过捕获要将圆绘制到的区域的图像来修复屏幕。在新位置绘制圆之前,可以通过重新绘制损坏的区域将圆从屏幕上删除。
https://stackoverflow.com/questions/10732978
复制相似问题