在处理中创建颜色渐变
Posted
技术标签:
【中文标题】在处理中创建颜色渐变【英文标题】:Create Colour Gradiente on Processing 【发布时间】:2022-01-15 07:35:17 【问题描述】:我有一个代码来绘制颜色,以便在圆形中创建径向渐变。知道它是从黑色到白色。如何切换颜色并使用其他值? 我试图为不同的颜色创建值,但它不起作用。 有谁知道该怎么做? 这是一段代码:
// function to draw the gradient
void desenhar_grad(float posX, float posY, int raio)
pushStyle();
noStroke();
for (int r = raio; r > 0; r--)
int tom = round(map(r, raio, 0, 255, 0)); // the last 2 values are the colours. first is the center, second is the exterior
fill(tom);
circle(posX, posY, r * 2);
popStyle();
【问题讨论】:
【参考方案1】:您的方法非常适合灰度颜色。
要在具有多个通道的两种颜色之间轻松插值,您可以使用lerpColor()
。它将两种颜色作为前两个参数(插值的颜色和插值的颜色),第一个参数是插值量(介于 0.0 和 1.0 之间的值,其中 0 表示它是第一种颜色,1.0 是第二种颜色和例如,0.5 是两者之间的 50%)
然后您可以将 r 从 0.0 映射到 1.0 范围:
void setup()
desenhar_grad(50, 50, 50, color(0, 192, 192), color(192, 0, 192));
void desenhar_grad(float posX, float posY, int raio, color color1, color color2)
pushStyle();
noStroke();
for (int r = raio; r > 0; r--)
// the last 2 values are the colours. first is the center, second is the exterior
int tom = lerpColor(color1, color2, map(r, 0, raio, 0.0, 1.0));
fill(tom);
circle(posX, posY, r * 2);
popStyle();
【讨论】:
效果很好!非常感谢 这是我的荣幸,尽管大部分时间都是您自己解决的。如果答案有帮助,请考虑投票,如果它是您问题的解决方案,您可以通过勾选绿色复选标记来标记它。此外,从长远来看,这里有一些处理渐变资源可能会有所帮助:how to cache gradients、PeasyGradients Processing Library(可通过 Sketch > Import Library... > Add Library... ) 又一个问题!我试图让圆圈反弹,但它不起作用我什至尝试了最基本的方法,只是向圆圈 x 添加一个值(来自“step”int),但它不起作用。我知道这是一个基本问题,但我知道这一点:) ´´´ 我提供了a detailed answer:祝你好运,学习愉快!以上是关于在处理中创建颜色渐变的主要内容,如果未能解决你的问题,请参考以下文章
使用 SASS 函数主题颜色级别在引导程序 4 中创建自定义渐变