Java如何获取JFrame一个点颜色? 如题~~有没有办法 或者方法能 获取到JFRAME一个坐标点的颜色的像素???在线等指教........... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 C++比较方便,JFrame上的点转换成屏幕座标COLORREF nColor = GetPixel(hDC, x, y); java里我还没找到什么方法。 假设你的JFrame已经显示在屏幕上,那么可以用截屏的方法得到他的BufferedImage对象,Robot rbt = new Robot();Point point = frame.getLocationOnScreen();BufferedImage image = rbt.createScreenCapture(new Rectangle(point.x, point.y, frame.getWidth(), frame.getHeight()));接下来你就可以直接从这个BufferedImage里取坐标点的像素。使用 Java 进行图像处理 - 取得图像上指定位置像素的 rgb 颜色分量 我帮chenweionline 补充一些吧:在开始取色过程时,LZ首先得创建一个接受鼠标点击事件的地方,我觉得用JWindow比较好,然后在其上绘制chenweionline 写的image对象(需要调用Jwindow的paintComponent方法),然后用JWindow.setBounds(frame.getLocationOnScreen().x,frame.getLocationOnScreen().y,frame.getWidth(),frame.getHeight());JWindow.setVisible(true);将JWindow覆盖原本的JFrame,然后就是如何获取点击的位置的颜色的问题了:先对JWindow添加鼠标监听器:JWindow.addMouseListener(new MouseListener(){ public void mouseClicked(MouseEvent e){//获取鼠标点击事件 Color selectedColor = robot.getPixelColor(e.getX(),e.getY());//selectedColor 就是获取的颜色 //在这里就可以将颜色放到某个地方 JWindow.setVisible(false);//关闭JWindow,返回frame }})注意,这个方法只能在frame的范围内获取颜色,如果想可以获取全屏的颜色,就得将chenweionline写的BufferedImage image = rbt.createScreenCapture(new Rectangle(point.x, point.y, frame.getWidth(), frame.getHeight()));改为:BufferedImage image = rbt.createScreenCapture(new Rectangle(0,0,Toolkit.getDefaultToolkit().getScreenSize().getWidth(), Toolkit.getDefaultToolkit().getScreenSize().getHeight()));然后将JWindow的大小设为:Jwindow.setBounds(0,0,getDefaultToolkit().getScreenSize().getWidth(),Toolkit.getDefaultToolkit().getScreenSize().getHeight());就行了 不是很明白,像素==白色时 让什么停下来???如果知道坐标就能获得颜色啊而且就不用截图并使用JWindow了开个线程:public void run(){ while(true){ Color selectedColor = robot.getPixelColor(x,y);//x,y是坐标 if(selectedColor==Color.WHITE){ //do something... }}} java中,输入秒数,前3分钟一共0.2元,从第4分钟起,每一分钟0.1元,在线等 jtree的使用(Swing) java 这样写法,比较难理解,请求帮助 Java做tcp客户端的问题 有个小问题不是很明白.麻烦大家看看 jdbTable和queryDataSet显示某表,如何操作数据? 请大家帮个忙!!! 配置过james连数据库的高手请进,一个问题求教100分,不够可以加 有关java写文件的问题,在线等待 关于mysql数据库的查询表格显示在java的图形界面上 这道题怎么做? 面板显示的问题
COLORREF nColor = GetPixel(hDC, x, y); java里我还没找到什么方法。
Robot rbt = new Robot();
Point point = frame.getLocationOnScreen();
BufferedImage image = rbt.createScreenCapture(new Rectangle(point.x, point.y, frame.getWidth(), frame.getHeight()));
接下来你就可以直接从这个BufferedImage里取坐标点的像素。
使用 Java 进行图像处理 - 取得图像上指定位置像素的 rgb 颜色分量
在开始取色过程时,LZ首先得创建一个接受鼠标点击事件的地方,我觉得用JWindow比较好,然后在其上绘制chenweionline 写的image对象(需要调用Jwindow的paintComponent方法),然后用
JWindow.setBounds(frame.getLocationOnScreen().x,frame.getLocationOnScreen().y,frame.getWidth(),frame.getHeight());
JWindow.setVisible(true);
将JWindow覆盖原本的JFrame,然后就是如何获取点击的位置的颜色的问题了:
先对JWindow添加鼠标监听器:
JWindow.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e){//获取鼠标点击事件
Color selectedColor = robot.getPixelColor(e.getX(),e.getY());//selectedColor 就是获取的颜色
//在这里就可以将颜色放到某个地方
JWindow.setVisible(false);//关闭JWindow,返回frame
}
})注意,这个方法只能在frame的范围内获取颜色,如果想可以获取全屏的颜色,就得将chenweionline写的
BufferedImage image = rbt.createScreenCapture(new Rectangle(point.x, point.y, frame.getWidth(), frame.getHeight()));
改为:BufferedImage image = rbt.createScreenCapture(new Rectangle(0,0,Toolkit.getDefaultToolkit().getScreenSize().getWidth(), Toolkit.getDefaultToolkit().getScreenSize().getHeight()));
然后将JWindow的大小设为:
Jwindow.setBounds(0,0,getDefaultToolkit().getScreenSize().getWidth(),Toolkit.getDefaultToolkit().getScreenSize().getHeight());
就行了
如果知道坐标就能获得颜色啊而且就不用截图并使用JWindow了
开个线程:
public void run()
{
while(true){
Color selectedColor = robot.getPixelColor(x,y);//x,y是坐标
if(selectedColor==Color.WHITE){
//do something...
}
}
}