Java如何获取JFrame一个点颜色?

chensiyu04 2007-12-13 08:13:48
如题~~

有没有办法 或者方法能 获取到
JFRAME一个坐标点的颜色的像素???

在线等指教...........
...全文
689 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kacisusu 2007-12-14
  • 打赏
  • 举报
回复
不是很明白,像素==白色时 让什么停下来???
如果知道坐标就能获得颜色啊。。。而且就不用截图并使用JWindow了
开个线程:
public void run()
{
while(true){
Color selectedColor = robot.getPixelColor(x,y);//x,y是坐标
if(selectedColor==Color.WHITE){
//do something...
}
}
}
chensiyu04 2007-12-14
  • 打赏
  • 举报
回复
5楼的。。没办法的。。我不能用鼠标点那个地方。。但我只知道他的坐标。。
并且 那个坐标在不段的移动。 我就想判断 那个坐标移动到 像素==白色时 让他停下!!走不动
chensiyu04 2007-12-14
  • 打赏
  • 举报
回复
我的意思是
有1张图片(人物)
然后有个背景图
图片上面有条河 是红色的。不规则的弯曲的一条河
我想判断图上的颜色 如果等于红色
那么人物那张图 则走不过去~~
Kacisusu 2007-12-13
  • 打赏
  • 举报
回复
我帮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());
就行了。。。
chenweionline 2007-12-13
  • 打赏
  • 举报
回复
假设你的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 颜色分量
Yanbin_Q 2007-12-13
  • 打赏
  • 举报
回复
C++比较方便,JFrame上的点转换成屏幕座标
COLORREF nColor = GetPixel(hDC, x, y);

java里我还没找到什么方法。
chensiyu04 2007-12-13
  • 打赏
  • 举报
回复
能否给我一段完成的代码?
或者测试类`谢谢

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧