如何获得像素的颜色

时间:2013-04-23 16:45:28

标签: java getpixel

在我的下面的代码中...我希望在底部添加一个黄色条,如果发射子弹,子弹到达顶部的移动条(这是一个替代的黄色和青色框的痕迹)和触摸它在一个黄色的盒子里。为此,我计划首先检测子弹接触移动条的像素的颜色,然后如果像素颜色为黄色则在下面添加黄色条.......... ..这是我的代码: //

import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;

public class abyss extends Applet implements Runnable,KeyListener{
int lim=446,l,src,i=-40,n,c,ct=450,cl=225,y,f,bl,bw,fr,mud=0;
Thread v=null;

public void init() {
setBackground(Color.black);
addKeyListener(this);
                          }
public void start() {
       v=new Thread(this);
       v.start();
                                   }
public void run() {
try {
         int trainDelay = 0;

    while (true) {
           if(ct<=200)
           {repaint();
            }

            if (y == 1) {
            if (f<=41) {
                bl = cl + 25;
                bw = 10;
                f = lim;
            } 
                   if (f > 41) {
                repaint(bl, f, bw, bw + 1);
           if (--f<=41) {
                   if(l%80==0)
                   {mud=1; 
                    ct=ct-20;
                    System.out.println("decreased");
                    lim=lim-20; 
                    repaint();}
                   else if(l%80!=0  && (ct+20<=420))
                   {ct=ct+20;
                    lim=lim+20; 
                    }
                    y = 0;
                    bw = 0;
                                      }
            }
        }

        if (trainDelay <= 0) {
            repaint();
            i = i + 40;
            c = 1;
            n = i / 40;
            trainDelay = 200;
        }
        Thread.sleep(5);
        trainDelay--;
   }
} catch (Exception e) {
}

}

public void paint(Graphics g) {
if(ct>=200){
if(mud==1)
{g.setColor(Color.orange);
g.fill3DRect(0,ct+20,500,450-ct,true);}
g.setColor(Color.darkGray);
g.fill3DRect(0,200,30,300,true);
g.fill3DRect(470,200,30,300,true);
g.fill3DRect(0,470,500,30,true);
g.setColor(Color.blue);
g.fill3DRect(cl,ct,50,20,true);
setBackground(Color.black);
for(int j=n-1;j>=0;j--)
{  l=j*40;
if((c%2)==0)
{g.setColor(Color.cyan);
g.fill3DRect(l,0,50,40,true);}
else
{g.setColor(Color.orange);
g.fill3DRect(l,0,50,40,true);}
c++;
}
} 

{g.setColor(Color.yellow);
g.fillOval(bl,f,bw,bw);
if(ct<=200)
{setBackground(Color.red);
g.setColor(Color.yellow);
g.drawString("You win!!",215,210);
}   
}                                         }

public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_LEFT && cl>=38){
cl=cl-10;}
if(e.getKeyCode()==KeyEvent.VK_RIGHT && cl<=412){
cl=cl+10;}
if(e.getKeyCode()==KeyEvent.VK_UP){
y=1;}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
public void stop() {
try{wait();}
catch(Exception e) {}
}
public void destroy() {}
}

请告诉我如何检测颜色.........可以使用getColor()??

1 个答案:

答案 0 :(得分:0)

看起来你有一个良好的开端。 我建议您将青色和黄色框放在具有颜色和位置属性的对象上。

为您的box对象创建一个getColor方法,并为您的box对象和项目符号对象创建一个getLocation方法。

当bullet.getLocation = box.getLocation时 然后是box.getColor

看一下这个Java / Processing App,它可以在点击时设置圆圈的颜色。它使用的原理与我刚才描述的相似。

https://sourceforge.net/projects/all-spark-cube/

https://github.com/spudstud/All-Spark-Cube/blob/master/Sandbox/Panel_2d/LedObject.pde