问一个有点深度的算法
请问如何实现颜色渐变?
我在想在自已开发button上面实现颜色从上到下,范围从RGB(45, 77, 141) 到RGB(163, 189, 250)的渐变。画布的形状可
以是直角长方形也可以是圆角长方形.我现在问题是其它方面没问就是颜色不好控制当高度大于渐变范围时就会出现两种完全不同的颜色。
而且圆角的长方形的渐变也不行。请问如何实现这个算法?
问题点数:50、回复次数:3Top
1 楼operfume(橘子香水)回复于 2006-03-20 22:56:51 得分 5
直接用PhotoShop做好图,然后贴到按扭上.Top
2 楼nnnnyyyy(海洋之心)回复于 2006-03-21 15:33:10 得分 0
用贴图会慢的。
我在一个button上面用了渐变色。但是caption的背景色和button的背景色不一致(Caption那块是白色的)。这个怎么搞呢?
//画形状
Canvas.FillRect(Rect(0, 0, Width, Height));
//填充渐变色
InitializeColor := RGB(45, 77, 141);
TerminalColor := RGB(163, 198, 250);
for FillNumber := 0 to Height-1 do
begin
Red := GetRvalue(InitializeColor) + Trunc(FillNumber * (GetRvalue(TerminalColor) - GetRvalue(InitializeColor)) / (Height - 1));
Green := GetGvalue(InitializeColor) + Trunc(FillNumber * (GetGvalue(TerminalColor) - GetGvalue(InitializeColor)) /(Height - 1));
Blue := GetBvalue(InitializeColor) + Trunc(FillNumber * (GetBvalue(TerminalColor) - GetBvalue(InitializeColor)) / (Height - 1));
Canvas.Pen.Color := RGB(Red, Green, Blue);
Canvas.MoveTo(0, FillNumber);
Canvas.lineto(Width, FillNumber);
end;
//重写Caption
if Trim(Caption) <> '' then
begin
Canvas.Font := Font;
FontHeight := Canvas.TextHeight('X'); //得到字体高度
Canvas.TextOut((Width - Canvas.TextWidth(Caption)) div 2 , (Height - FontHeight) div 2, Caption);
end;
Top
3 楼whbo(王红波(年轻人,要有所作为))回复于 2006-03-21 16:25:19 得分 45
循环的时候,不要用1做循环,可以用按钮高度的一个比例,比如1/10,Top




