Java获得JPanel第一个像素的颜色

2025-01-03 17:45:25
推荐回答(2个)
回答1:

awt有一个BufferedImage类,这个类有一个返回int类型的getRGB()方法,这个数据格式是 0xrrggbb,所以只需通过移位就能获得对应的R,G,B数值: int rgb = image.getRGB(x, y); int R = (rgb & 0xff0000) >> 16; int G = (rgb & 0xff00) >> 8; int B = (rgb & 0xff); 问题在于,如何拿到BufferedImage对象,这个类不能用来根据硬盘上的图片初始化一个内存中的图像。现在有两种方法可以正确的初始化bufferedImage. 1、初始化一个固定大小的BufferedImage画布,用他对应的Graphics对象调用graphics.drawImage()方法在画布上画图。 2、awt有个Robot类,它有个很重要的函数叫做createScreenCapture,用来截屏的。它接受的参数是一个Rectangle对象,用来表明截屏位置和大小。最关键的是这个函数直接返回BufferedImage对象。

回答2:

有个东西叫做BufferedImage.它有个方法叫做getGraphics(),就是取得图片的画笔。JPanel有个方法(SWING很多可见类都有)叫做paint,参数类型就是Graphics.
显示图片事件,可以给JPanel用addComponentListener加上一个叫做ComponentListener的东西,里面有componentShown方法,就是说这个Object显示时呼叫某个函数。
其他的,发挥想象力吧。