最简单的 IGPPathGradientBrush 就是有一个中心颜色和一组周边颜色的渐变.
这里牵扯到 CenterColor、SurroundColors 属性和 SetSurroundColors 方法.
测试一效果图:
测试一代码:
//使用 SetSurroundColors 方法设置周边色组:
uses GdiPlus, GdiPlusHelpers;
procedure TForm1.FormPaint(Sender: TObject);
var
Brush: IGPPathGradientBrush;
Rect: TGPRect;
Path: IGPGraphicsPath;
begin
Rect.Initialize(10, 10, 200, 150);
Path := TGPGraphicsPath.Create;
Path.AddEllipse(Rect);
Brush := TGPPathGradientBrush.Create(Path);
Brush.CenterColor := $FF00FF00;
Brush.SetSurroundColors([$FF000000]);
Canvas.ToGPGraphics.FillEllipse(Brush, Rect);
end;
//使用 SurroundColors 属性设置周边色组:
uses GdiPlus, GdiPlusHelpers;
procedure TForm1.FormPaint(Sender: TObject);
var
Brush: IGPPathGradientBrush;
Rect: TGPRect;
Path: IGPGraphicsPath;
Colors: IGPColors;
begin
Rect.Initialize(10, 10, 200, 150);
Path := TGPGraphicsPath.Create;
Path.AddEllipse(Rect);
Brush := TGPPathGradientBrush.Create(Path);
Brush.CenterColor := $FF00FF00;
Colors := TGPArray<TGPColor>.Create(1);
Colors[0] := $FF000000;
Brush.SurroundColors := Colors;
Canvas.ToGPGraphics.FillEllipse(Brush, Rect);
end;
测试二效果图:
测试二代码:
//使用 SetSurroundColors 方法设置周边色组:
uses GdiPlus, GdiPlusHelpers;
procedure TForm1.FormPaint(Sender: TObject);
var
Brush: IGPPathGradientBrush;
Rect: TGPRect;
Path: IGPGraphicsPath;
begin
Rect.Initialize(10, 10, 200, 150);
Path := TGPGraphicsPath.Create;
Path.AddRectangle(Rect);
Brush := TGPPathGradientBrush.Create(Path);
Brush.CenterColor := $FFFFFFFF;
Brush.SetSurroundColors([$FFFF0000, $FF00FF00, $FF0000FF, $FFFFFF00]);
Canvas.ToGPGraphics.FillRectangle(Brush, Rect);
end;
//使用 SurroundColors 属性设置周边色组:
uses GdiPlus, GdiPlusHelpers;
procedure TForm1.FormPaint(Sender: TObject);
var
Brush: IGPPathGradientBrush;
Rect: TGPRect;
Path: IGPGraphicsPath;
Colors: IGPColors;
begin
Rect.Initialize(10, 10, 200, 150);
Path := TGPGraphicsPath.Create;
Path.AddRectangle(Rect);
Brush := TGPPathGradientBrush.Create(Path);
Brush.CenterColor := $FFFFFFFF;
Colors := TGPArray<TGPColor>.Create(4);
Colors[0] := $FFFF0000;
Colors[1] := $FF00FF00;
Colors[2] := $FF0000FF;
Colors[3] := $FFFFFF00;
Brush.SurroundColors := Colors;
Canvas.ToGPGraphics.FillRectangle(Brush, Rect);
end;