发表于:2005-05-27 22:01:00
1楼
procedure TForm1.DrawFillRect(DestCanvas:TCanvas;RectX,RectY,RectW,RectH:Integer;
Percent:Single;BkClr,ForeClr:TColor);
begin
//绘制从左到右的填充
with DestCanvas do begin
Brush.Color := BkClr;
Rectangle(Rect(RectX,RectY,RectW,RectH));
Brush.Color := ForeClr;
FillRect(Rect(RectX+1,RectY+1,RectX+Round(RectW * Percent*0.01),RectH-1));
end;
end;
//调用方式:
DrawFillRect(Image1.Canvas,0,0,100,100,30,clYellow,clRed);
在Image1的X=0,Y=0处绘制1个边长为100的正方形,填充率为30%,背景色为黄色,填充色为红色。
---------------------------------------------------------
procedure TForm1.DrawFillPie(DestCanvas:TCanvas;RectX,RectY,RectW,RectH:Integer;
Percent:Single;BkClr,ForeClr:TColor);
var
MiddleX,MiddleY:Integer;
Angle:Single;
begin
//绘制圆弧形填充
with DestCanvas do begin
Brush.Color := BkClr;
Ellipse(RectX,RectY,RectW,RectH);
Brush.Color := ForeClr;
MiddleX := RectW div 2;
MiddleY := RectH div 2;
Angle := (Pi * ((Percent / 50) + 0.5));
Pie(RectX, RectY, RectW, RectH,
Integer(Round(MiddleX * (1 - Cos(Angle)))),
Integer(Round(MiddleY * (1 - Sin(Angle)))), MiddleX, 0);
end;
end;
//调用方式:
DrawFillPie(Image1.Canvas,0,0,100,100,30,clYellow,clRed);
在Image1的X=0,Y=0处绘制1个外接矩形为100×100的圆,填充率为30%,背景色为黄色,填充色为红色。