java - 如果一个像素的颜色与另一个颜色相似,如何比较

标签 java swing javafx colors awt

我正在编写一个程序,该程序可以自动玩名为bemuse的游戏。目前,我已经设置了所有组件,但是,我正在确定色块是否在您击中它的区域上。

我尝试使用在存在类似问题的线程中提供的距离公式,但始终会得到错误的结果。

boolean similarTo(Color c,Color v){
        double distance = Math.sqrt((c.getRed() - v.getRed())*(c.getRed() - v.getRed()) + (c.getGreen() - v.getGreen())*(c.getGreen() - v.getGreen()) + (c.getBlue() - v.getBlue())*(c.getBlue() - v.getBlue()));
//      double average1 = c.getRed()+c.getBlue()+c.getGreen();
//      double average2 = v.getRed()+v.getBlue()+v.getGreen();

        if(distance < 100 ){
            return true;
        }else{
            return false;
        }
    }

使用此功能,应在像素变得相似时按下,但结果总是不同,例如它始终表示相同,永不更新。

最佳答案

您的问题可能是由于使用了错误的Color类。您可以在JDK中找到2个Color类:

  • java.awt.Color:公开getRed,getGreen,getBlue方法,返回 0-255 之间的 int 值。
  • javafx.scene.paint.Color:公开getRed,getGreen,getBlue方法,返回 0-1 之间的 double 值。

  • 如果您使用javafx.scene.paint.Color,则您的距离永远不会大于1.73。您需要使用java.awt.Color来保持0-441.67之间的距离

    关于java - 如果一个像素的颜色与另一个颜色相似,如何比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56104846/

    相关文章:

    java - 当 Component 不再可见时有没有办法获得通知,因为 parent 已从集合中删除?

    java - 如何将 javaplot 窗口停靠到 java 中的 JPanel

    java - 如何可视化 Swing 控件中的焦点?

    javafx - 为什么start()会抛出异常?

    JavaFX TableColumn 文本换行

    javafx如何在fxml Controller 中使用线程

    java - 测量 Java 应用程序中的 sql 执行时间

    java - AEM 6.5 PKIX 路径构建失败 : sun. security.provider.certpath.SunCertPathBuilderException

    Java并行执行比顺序执行慢

    java - 使用方法注释值来定位切入点