Java采样像素颜色摆动

时间:2009-07-03 00:29:52

标签: java swing

我必须创建一个特殊的TextFieldUI,将图像绘制为背景。该图像包含一些alpha分量。但是,只要在该文本字段中写入字符,首先它会重绘背景然后绘制字符。当背景不包含alpha分量时,这很好,但是在输入几个字符后,alpha区域总和变为黑色。

我能看到的唯一方法是在TextfieldUI的paintBackground方法中(我要覆盖),我必须首先在该位置采样背景的颜色,绘制整个图形组件的颜色,然后画我的背景。

  1. 当我有权访问的是Graphics对象时,是否有人知道如何对像素的颜色进行采样?

  2. 除了覆盖TextfieldUI中的paintBackground之外,还有更好的方法将自定义图像绘制为文本字段背景吗?

  3. 由于

3 个答案:

答案 0 :(得分:1)

我之前没有尝试过,但是Swing是建立在AWT之上的,Robot类有一种方法可以在AWT中对特定像素进行采样

答案 1 :(得分:0)

好吧,我不知道你的自定义代码在paintBackground方法中是什么样的,但我会确保你在绘制图像之前填写文本字段背景。

我会让你决定它是否“更好”,但你可以使用Background Panel,它允许你将图像添加到面板。然后将文本字段添加到面板(文本字段自动变为非不透明,以便显示图像)。然后将面板添加到GUI。

如果这不起作用,那么最好有一个代码演示,以便我们可以看到实际发生的事情。

答案 2 :(得分:0)

当你覆盖paintBackground时,你首先调用超类版本,对吧?它已经奠定了一个背景颜色矩形,可以让你的图像重新开始。

它不是“采样”背景颜色,而是可能已经正确(超类paintBackground代码从父组件获取它,如果不是本地设置的话)。如果该默认值不正确,请在初始界面构造中进行设置。 (你的领域没有被覆盖在未知纯色的其他复杂的任意界面上,是吗?)