我想根据0到100的值显示颜色。在一端(100),它是纯红色,在另一端(0),是纯绿色。在中间(50),我想让它变成黄色。
并且我希望颜色逐渐从一个渐变到另一个,如在75处,颜色为一半红色和一半黄色等等。
如何编写RGB值以反映这种渐变?谢谢。
并且我希望颜色逐渐从一个渐变到另一个,如在75处,颜色为一半红色和一半黄色等等。
如何编写RGB值以反映这种渐变?谢谢。
def rgb(p):# <-- percentage as parameter
#Starting with color red
d = [255,0,0]
#formula for finding green value by percentage
d[1] = int((510*p)/100)
print(d[1])
#if green value more than 255
#set green value 255
#reduce the red value from remaining green value
if d[1]>255:
d[0] -= d[1]-255
d[1] = 255
return d
print(rgb(0))
function green_yellow_red(core_MHz, core_id){
var core_color = ~~core_MHz.map(1400, 3500, 0, 510)
if(core_color < 255){
$('#cpu_core_'+core_id).css('background', 'rgb('+core_color+',255 , 0)')
}else{
core_color-=255
$('#cpu_core_'+core_id).css('background', 'rgb(255 ,'+ (255-core_color) +', 0)')
}
}
大同小异。只是用Delphi Pascal编写并简化+锁定为信号灯颜色(红/黄/绿)。
rectangle1.Fill.Color:=DefineColorSemaphore(newcolor);
function TForm1.DefineColorSemaphore(valperc:integer):TAlphaColor;
var
vcol: TAlphaColorRec;
begin
vcol.B := 0; // blue: always 0
vcol.A := 255; // alpha: 255=no
if (valperc < 50) then
begin
// starts @ RGB=255,0,0 and increases G 0->255
vcol.R := 255;
vcol.G := trunc(255*valperc/50);
end
else
begin
// starts @ RGB=255,255,0 and decreases R 255->0
vcol.R := 255-trunc(255* (valperc - 50)/50);
vcol.G := 255;
end;
result:= TAlphaColor(vcol);
end;
Color percentToColor(float percent)
{
if (percent<0 || percent>1) { return Color.Black; }
int r, g;
if (percent<0.5)
{
r=255;
g = (int)(255*percent/0.5); //closer to 0.5, closer to yellow (255,255,0)
}
else
{
g=255;
r = 255 - (int)(255*(percent-0.5)/0.5); //closer to 1.0, closer to green (0,255,0)
}
return Color.FromArgb(r, g, 0);
}
你只需要创建一个带有整数参数的函数
输入1将返回RGB(1,99,0)
private Color fader(int v){ return Color.FromArgb(v, 100-v, 0); }
r.g.b
值是最高到 255 而不是 100。 - Rafael Herscovici// 在 WM_DRAWITEM 事件中,用红黄绿渐变填充 OwnerDraw 控件
int cx = lpDis->rcItem.right - lpDis->rcItem.left;
for (int x = 0; x < cx; x++)
{
COLORREF cr;
double d = 255 * 2 * (double)x/(double)cx;
cr = x <= cx/2 ? RGB(255, d, 0) :
RGB(255 - d, 255, 0);
HPEN hPen = CreatePen(PS_SOLID, 1, cr);
HPEN hOldPen = (HPEN)SelectObject(lpDis->hDC, hPen);
MoveToEx(lpDis->hDC, x, lpDis->rcItem.top, NULL);
LineTo(lpDis->hDC, x, lpDis->rcItem.bottom);
SelectObject(lpDis->hDC, hOldPen);
DeleteObject(hPen);
}
最近我打算使用Javascript做一些事情。我遵循了两个步骤。
这是我用于此目的的代码。
var blue = 0.0, red = 0.0, green = 0.0;
if(scaledValue <= 0.5)
{
red = (scaledValue * 2) * 255.0;
green = 255.0;
blue = 0;
}else
{
red = 255.0;
green = 255.0 + 255.0 - ((scaledValue * 2)* 255);
blue = 0;
}
这个解决方案受到了@jterrace答案的启发。