以编程方式生成渐变?
给定2种rgb颜色和一个矩形区域,我想在颜色之间生成一个基本的线性渐变。我做了一个快速搜索,我唯一能找到的就是这个博客条目,但示例代码似乎丢失了,或者至少在这篇文章的时候是这样。任何有帮助的东西,算法,代码示例,等等。这将用Java编写,但是显示层已经得到了照顾,我只需要弄清楚如何弄清楚要显示什么。
给定2种rgb颜色和一个矩形区域,我想在颜色之间生成一个基本的线性渐变。我做了一个快速搜索,我唯一能找到的就是这个博客条目,但示例代码似乎丢失了,或者至少在这篇文章的时候是这样。任何有帮助的东西,算法,代码示例,等等。这将用Java编写,但是显示层已经得到了照顾,我只需要弄清楚如何弄清楚要显示什么。
您希望在第一种颜色和第二种颜色之间进行插值。通过计算其每个分量(R、G、B)的相同插值,可以轻松插值颜色。插值的方法有很多种。最简单的方法是使用线性插值:只需取第一种颜色的百分比p和第二种颜色的百分比1 - p:
R = firstCol.R * p + secondCol.R * (1 - p)
还有另一个与此相关的问题。
还有其他插值方法有时效果更好。例如,使用钟形(乙状)插值函数可使过渡更平滑。
/EDIT:糟糕,你的意思是使用预定义的函数。好吧,甚至更容易。您链接的博客文章现在具有 Python 中的示例代码。
在Java中,您可以使用GradientPaint
。
您可以使用内置的 GradientPaint 类。
void Paint(Graphics2D g, Regtangle r, Color c1, Color c2)
{
GradientPaint gp = new GradientPaint(0,0,c1,r.getWidth(),r.getHeight(),c2);
g.setPaint(gp);
g.fill(rect);
}