在处理中创建颜色渐变

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 中创建自定义渐变

echarts颜色渐变

渐变颜色到自定义视图

如何在 Swift 4 的 UIView 中创建带圆角的渐变边框

ShaderLab学习小结用插值函数lerp渐变颜色

如何在 PHP 中绘制渐变矩形? [关闭]