SetBlendBellShape 方法: 创建基于钟形曲线的渐变过渡过程;
SetBlendTriangularShape 方法: 创建一个从中心色向两端单个颜色线性过渡的线性渐变过程.
两个方法好像区别不大.
SetBlendBellShape 测试效果图:
SetBlendTriangularShape 测试效果图:
SetBlendBellShape 测试代码:
uses GdiPlus;
procedure TForm1.FormPaint(Sender: TObject);
var
Graphics: IGPGraphics;
Rect: TGPRectF;
Brush: IGPLinearGradientBrush;
begin
Graphics := TGPGraphics.Create(Canvas.Handle);
Rect.Initialize(10, 10, 120, 150);
Brush := TGPLinearGradientBrush.Create(Rect, $FFFF0000, $FF0000FF, 0);
Brush.SetBlendBellShape(1);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendBellShape(0.8);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendBellShape(0.5);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendBellShape(0.2);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendBellShape(0);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
//
Graphics.TranslateTransform(-Graphics.Transform.OffsetX, Rect.Y + Rect.Height);
Brush.SetBlendBellShape(1, 1);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendBellShape(1, 0.8);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendBellShape(1, 0.5);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendBellShape(1, 0.2);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendBellShape(1, 0);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
end;
SetBlendTriangularShape 测试代码:
uses GdiPlus;
procedure TForm1.FormPaint(Sender: TObject);
var
Graphics: IGPGraphics;
Rect: TGPRectF;
Brush: IGPLinearGradientBrush;
begin
Graphics := TGPGraphics.Create(Canvas.Handle);
Rect.Initialize(10, 10, 120, 150);
Brush := TGPLinearGradientBrush.Create(Rect, $FFFF0000, $FF0000FF, 0);
Brush.SetBlendBellShape(1);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendTriangularShape(0.8);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendTriangularShape(0.5);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendTriangularShape(0.2);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendTriangularShape(0);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
//
Graphics.TranslateTransform(-Graphics.Transform.OffsetX, Rect.Y + Rect.Height);
Brush.SetBlendTriangularShape(1, 1);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendTriangularShape(1, 0.8);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendTriangularShape(1, 0.5);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendTriangularShape(1, 0.2);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
Brush.SetBlendTriangularShape(1, 0);
Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
Graphics.FillEllipse(Brush, Rect);
end;