GdiPlus[16]: IGPLinearGradientBrush 之 SetBlendBellShape、SetBlendTriangularShape


SetBlendBellShape 方法: 创建基于钟形曲线的渐变过渡过程;

SetBlendTriangularShape 方法: 创建一个从中心色向两端单个颜色线性过渡的线性渐变过程.

两个方法好像区别不大.

SetBlendBellShape 测试效果图:

26153439_17SK.png

SetBlendTriangularShape 测试效果图:

26153439_K3KG.png

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;

 
 
 
 
 

 

 

  

转载于:https://my.oschina.net/hermer/blog/319958

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值