android 扇形渐变按钮,扇形或圆形如何实现渐变色

扇形或圆形怎么实现渐变色

我想实现扇形的渐变,S是圆的半径

X1 := 0;

Y1 := 0;

X2 := S * 2;

Y2 := S * 2;

Canvas.Pie(

X1, Y1,

X2, Y2,

S + 2, 0 - 2,

0 - 2, S + 2

);

//渐变色,分2部分处理

sPic := (S div 4) / 32;

sTemp := 0;

sTemp1 := S * 2;

for i := 1 to 32 do

begin

Canvas.Brush.Color := RGB(3 * i + 127, 3 * i + 127, 3 * i + 127);

Canvas.Pie(Round(sTemp + sPic * i), Round(sTemp + sPic * i),

Round(sTemp1 - sPic * i), Round(sTemp1 - sPic * i),

S + 2, Round(sTemp + sPic * i) - 2,

Round(sTemp + sPic * i) - 2, S + 2

);

end;

结果显示出来的扇形是这样,好像是颜色没变,但是实际代码里颜色在改变的:

025302109.png

------解决思路----------------------

你的思路不对,图上留下的都是扇形的边框。应该改为画弧线。代码如下:

procedure TForm1.Button1Click(Sender: TObject);

var x1,x2,y1,y2,s,i:integer;

sPic:Double;

sTemp :integer;

sTemp1 :integer;

begin

s:=400;

with Image1 do

begin

X1 := 0;

Y1 := 0;

X2 := S * 2;

Y2 := S * 2;

Canvas.Pie(X1, Y1,

X2, Y2,

S + 2, 0 - 2,

0 - 2, S + 2);

//渐变色,分2部分处理

sPic := (S div 4) / 32;

sTemp := 0;

sTemp1 := S * 2;

for i := 1 to 128 do

begin

//      Canvas.pen.Color := RGB(2*i, 2*i, 2*i);

if i<64 then Canvas.pen.Color := RGB(4*i, 4*i, 4*i)

else Canvas.pen.Color := RGB(254-4*i,254-4*i,254-4*i);

Canvas.Pen.Width:=6;                     // 边框宽度 5

Canvas.arc(Round(sTemp + sPic * i),

Round(sTemp + sPic * i),

Round(sTemp1 - sPic * i),

Round(sTemp1 - sPic * i),

S + 2,

Round(sTemp + sPic * i) - 2,

Round(sTemp + sPic * i) - 2,

S + 2);

end;

end;

end;

效果图

025302110.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值