Java 如何从使用LinearGradientPaint绘制的画布中获取特定的RGB值?

Java 如何从使用LinearGradientPaint绘制的画布中获取特定的RGB值?,java,colors,gradient,paintcomponent,linear-gradients,Java,Colors,Gradient,Paintcomponent,Linear Gradients,我已经使用绘制了一个动态填充了用户定义颜色的矩形。这是通过重写paintComponent方法实现的 下面是它的样子: 你可以看到上面的小拇指/把手。用户可以移动、删除和添加新的。它们也可以改变颜色。因此,用户可以完全自定义渐变的外观。到目前为止,这一切正常,没有问题 我现在需要的是,我试着搜索这个信息,就是在这个梯度上的任何地方得到RGB值 我只知道LinearGradientPaint用于生成渐变的x数量的颜色。我知道这些颜色位于什么点(分数)(渐变框下方的数字,对应于顶部的“拇指”) 在

我已经使用绘制了一个动态填充了用户定义颜色的矩形。这是通过重写
paintComponent
方法实现的

下面是它的样子:

你可以看到上面的小拇指/把手。用户可以移动、删除和添加新的。它们也可以改变颜色。因此,用户可以完全自定义渐变的外观。到目前为止,这一切正常,没有问题

我现在需要的是,我试着搜索这个信息,就是在这个梯度上的任何地方得到RGB值

我只知道
LinearGradientPaint
用于生成渐变的x数量的颜色。我知道这些颜色位于什么点(分数)(渐变框下方的数字,对应于顶部的“拇指”)


在用于生成渐变的RGB值之间是否存在颜色?在我上面的示例中,我指的是变暗的红色或绿色区域。

一种方法可以做到这一点,就是创建一个与组件宽度相同的1像素高的
缓冲图像
,将渐变渲染到它,然后简单地使用一些东西比如
BufferedImage#getRGB

这将返回一个
int
压缩颜色值,然后可以使用该值返回一个
color
对象,从而更容易提取像素的颜色分量


当然,如果您也将
缓冲图像
用作主要输出,那么这将更加容易,您只需创建一次,因为您将更新图像以便将其渲染到屏幕上,如果这真的是
新颜色(r1、g1、b1)之间的线性渐变,那么它也将是最新的
新颜色(r2、g2、b2)
,然后是
x
处的颜色,其中
0谢谢,这听起来是个不错的建议。我会尝试一下,如果可行的话,接受你的答案!如果这是一个很好的近似值,就可以了。它不必100%精确到我的目的。好吧,试试看它对你有多有效。它肯定会计算得很快很好。
new Color((int)(r1*(1-x)+r2*x),(int)(g1*(1-x)+g2*x),(int)(b1*(1-x)+b2*x));