//我想获得canvas中某一点的颜色,代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import java.lang.*;
import java.util.*;
public class a
{
public a()
{MainFrame frame=new MainFrame();}
public static void main(String args[])
{new a();}
}
class MainFrame extends JFrame
{
JPanel panel=new JPanel();
JPanel canvasPanel=new JPanel();
Canvas canvas=new Canvas();
JButton btn=new JButton("getRGB(50,50)");
MainFrame()
{
addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e){dispose();System.exit(0);}});this.setLayout(new BorderLayout());
canvas.setPreferredSize(new Dimension(200,200));
btn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//输出canvas上(50,50)的颜色???????
}
});
panel.add(btn);
this.add("North",panel);
this.add(canvas);this.pack();
this.show();
}
}

解决方案 »

  1.   

    你到这看一下wizardblue,昨晚那个方法不行.
    http://community.csdn.net/Expert/topic/5151/5151321.xml?temp=.508053
      

  2.   

    是获取类似的结果不?
    000000
    00FFFF
      

  3.   

    对啊,就是RGB的值,我的QQ是76469216
      

  4.   

    btn.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    // 输出canvas上(50,50)的颜色???????
    try{
     Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
     BufferedImage screenshot = (new Robot()).createScreenCapture(new 
                  Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight())); 
     int color = screenshot.getRGB(50,60);
     int[] p=new int[3];
     p[0]=(int)((color&0x00FF0000)>>>16); //Red level
     p[1]=(int)((color&0x0000FF00)>>>8); //Green level
     p[2]=(int)(color&0x000000FF); //Blue level
                      T.show(p);
    }catch(AWTException awtE){
    System.out.println("error occured.");
    }


                

    }
    });
      

  5.   

    不过这个是截屏以后对截屏的颜色分析,具体要获取canvas上坐标为x,y点的颜色,应该是frame的left,top再加上canvas的left,top,然后,再加上具体的x,y
      

  6.   

    这样太慢了,因为我现在得实现个区域填充算法,要不断获取.
    我现在找到个方法是把canvas上画的东西保存成一个image,再把image每个象素的值存进一个数组,然后就能获取对应的坐标的颜色.
    不过如何把canvas上画的东西保存成一个image???