取色笔的实现

所需要用到的类:
Robot
Rectangle
BufferedImage
Java。awt。Robot类用于控制鼠标和键盘,它提供了很多方法来进行鼠标和键盘的操作, 这里我们用他来截取一块屏幕,这个方法是createScreenCapture(Rectangle R),我们看到这个方法需要的参数要用到Rectangle类。

Java。awt。Rectangle它指定了做表空间的一个区域,通过Rectangle 对象的左上顶点的坐标(x,y)、宽度和高度可以定义这个区域。 我们这里用到他的构造函数Rectangle(int x,int y,int width, int height)。 在屏幕中我们添加鼠标事件获取当前取色笔点击的屏幕,当然我们取色是区一个点,所以我们屏幕大小可设为一,然后我们要做的就是把这块屏幕传给BufferedImageot。

java.awt.BufferedImage它是一个可以访问图形数据缓冲区的Image,它的对象是附图片,然后把图片的各个像素存在一个数组中,我们这里把Rectangle对象传过去,也就是一个点,然后我们将用到BufferedImage的一个方法;getRGB(int x,inty),在API中写道:
参数:
x, y - 像素的坐标,从该坐标得到默认 RGB 颜色模型和 sRGB 颜色空间中的像素。
所以我一开始把里面的参数看成了是传过来屏幕的某个坐标,其实这里的参数表达的是像素数组的下标。
getRGB它的返回值是一个int型的数据,所以我想用这个返回值来获取Color的3个RGB值,结果很不理想。它是读取ARGB像素值,并存储到rgbData数组中,rgbData中的数据是以0xAARRGGBB格式存储的,代表每个像素的颜色属性和透明属性。所以我一直没弄懂,然后当我知道 Color可以直接把这个int型的数传过去时,着实蛋疼了一把。

代码:
public void getRGB(int x,int y) throws AWTException
{
rb=new Robot(); //测试自动化
Dimension d= new Dimension(800,800);
Rectangle rec=new Rectangle(x,y,1,1); //一片大小的矩形区域
BufferedImage bi= rb.createScreenCapture(rec);
int pixelColor = bi.getRGB(0,0);
jpanel_color.JBcolor=new Color(pixelColor);
jpanel_color.color_show.setBackground(jpanel_color.JBcolor);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值