我已经使用LinearGradientPaint class绘制了一个用用户定义的颜色动态填充的矩形。这是通过覆盖paintComponent方法而发生的。

看起来是这样的:



您可以在顶部看到小拇指/手柄。用户可以四处移动,删除它们并添加新的。他们还可以更改颜色。结果,用户可以完全自定义渐变的外观。到目前为止,一切正常,没有问题。

现在,我需要搜索该信息,现在需要的是在此渐变的任何位置获取RGB值。

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

无论如何,有没有要获得用于生成渐变的RGB值之间的颜色?在上面的示例中,我的意思是变暗的红色或绿色区域。

最佳答案

如果这确实是new Color(r1,g1,b1)new Color(r2,g2,b2)之间的线性渐变,则x处的颜色,其中0 <= x <= 1

new Color((int)(r1*(1-x)+r2*x),(int)(g1*(1-x)+g2*x),(int)(b1*(1-x)+b2*x));


当然,我不知道这是否是LinearGradientPaint内实际使用的公式-但它应该与此等效。

09-28 00:08