我已经使用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
内实际使用的公式-但它应该与此等效。