Java 如何找到JPanel上的主色?

Java 如何找到JPanel上的主色?,java,swing,paint,Java,Swing,Paint,我正在尝试创建一个游戏。有两个玩家由两个矩形表示。两个矩形连续移动,可以使用WASD和上、下、左、右键重定向。每个矩形在任何地方都会留下自己颜色的痕迹。游戏的目标是在限定的时间内用你的颜色给大部分面板上色。除了制作游戏的部分告诉我哪种颜色是最常见的颜色外,我知道如何做所有事情。似乎没有一种方法可以做到这一点,那么有什么方法可以解决这个问题吗?当游戏结束时,您可以使用如下代码创建面板的缓冲图像: Dimension size = panel.getSize() BufferedImage imag

我正在尝试创建一个游戏。有两个玩家由两个矩形表示。两个矩形连续移动,可以使用WASD和上、下、左、右键重定向。每个矩形在任何地方都会留下自己颜色的痕迹。游戏的目标是在限定的时间内用你的颜色给大部分面板上色。除了制作游戏的部分告诉我哪种颜色是最常见的颜色外,我知道如何做所有事情。似乎没有一种方法可以做到这一点,那么有什么方法可以解决这个问题吗?

当游戏结束时,您可以使用如下代码创建面板的
缓冲图像:

Dimension size = panel.getSize()
BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = image.createGraphics();
panel.paint( g2d );
然后,您可以使用
getRGB(…)
方法在
buffereImage
中迭代所有像素。然后跟踪每个玩家的像素

编辑:

在将面板绘制到BuffereImage上之前,可以对一些绘制进行硬编码,以查看算法是否正常工作

例如:

//panel.paint( g2d );
g2d.setColor( Color.RED );
g2d.fillRect( 0, 0, 5, 5);
g2d.setColor( Color.GREEN);
g2d.fillRect( 20, 20, 10, 10);
// now test your algorithm.

由于您知道刚刚绘制的矩形的大小,因此应该知道算法的预期输出。一旦它与硬编码数据一起工作,您就可以使用随机绘图对其进行测试,确信它能工作。

我认为您不应该通过查看GUI来确定哪个玩家获胜。GUI应该只负责绘制结果。你应该有一种不同的方法来追踪每个玩家画的区域,并用它来决定画什么。我试过这样做。由于缺乏确定性,结果让我感到困惑。
for(int i=0;i@ArcIX1)不要继续创建新的颜色对象。在循环外部创建红色和绿色对象,并在循环外部获取其int值。然后在循环中,您只需进行比较。2) 
我不确定它是否正确。
-这就是您进行测试的原因。从一个小区域开始,可能是一种颜色的5x5矩形,看看结果如何。然后添加两个区域。请参见编辑。