如何在不触及颜色本身的情况下处理颜色 transparency/opacity? V5

How to address a color transparency/opacity without touching the color itself? V5

例如我有这些颜色变量:

Color1 = #334455FF
Color2 = #33445588

唯一的区别是 opacity/transparency 组件。我们可以只解决这个组件,而不触及 RGB 组件吗?例如(即兴的明显语法概念):

Color1 = #334455FF
Color2 = @Color1, opacity=50

我觉得V4也有类似的功能……(只是那个年代我不在)

我相信您正在寻找 color.t() 函数。

Retrieves the color's transparency.

//@version=5
indicator("color.t", overlay=true)
plot(color.t(color.new(color.red, 50)))

编辑:

您可以使用 color.r()color.g()color.b() 函数来获取颜色的 r、g、b 分量。然后使用color.rgb()函数创建一个新的颜色。

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vitruvius

//@version=5
indicator("My script")

color1 = color.new(#c9ff73, 0)

color_r = color.r(color1)
color_g = color.g(color1)
color_b = color.b(color1)

color2 = color.rgb(color_r, color_g, color_b, 25)
color3 = color.rgb(color_r, color_g, color_b, 50)
color4 = color.rgb(color_r, color_g, color_b, 75)

plot(0, "1", color1, linewidth=5)
plot(5, "2", color2, linewidth=5)
plot(10, "3", color3, linewidth=5)
plot(15, "4", color4, linewidth=5)

transp = input.int(0, minval=0,maxval=100)
colbase = input.color(color.yellow)

var color _col = na 

_col := color.new(colbase, transp)

plot(close,'close',_col,3)