GdiPlus[12]: IGPLinearGradientBrush 的其他构建方式


第二种构建方式: TGPLinearGradientBrush.Create(矩形, 颜色1, 颜色2, 渐变模式);

第三种构建方式: TGPLinearGradientBrush.Create(矩形, 颜色1, 颜色2, 角度);

第三种构建方式中的 "角度"(X 轴, 顺时针)相当于是对渐变模式的自定义, 下面两段测试代码的结果是一样的.

另外, 第三种构建方式还有一个默认为 False 的 Boolean 参数, 说明指定角度是否受其他变换的影响.

测试效果图:

GdiPlus[12]: IGPLinearGradientBrush 的其他构建方式

测试一:


uses GdiPlus;



procedure TForm1.FormPaint(Sender: TObject);

const

  C1 = $FFFF0000;

  C2 = $FF0000FF;

var

  Graphics: IGPGraphics;

  Rect, RectBrush: TGPRect;

  Brush: IGPLinearGradientBrush;

begin

  Graphics := TGPGraphics.Create(Canvas.Handle);

  Rect.Initialize(10, 10, 200, 150);

  RectBrush.Initialize(Rect.X + Rect.Width div 8,

                       Rect.Y + Rect.Height div 8,

                       Rect.Width div 4,

                       Rect.Height div 4);



  //LinearGradientModeHorizontal 是默认值

  Brush := TGPLinearGradientBrush.Create(RectBrush, C1, C2, LinearGradientModeHorizontal);

  Graphics.FillRectangle(Brush, Rect);



  Graphics.TranslateTransform(0, Rect.Height + Rect.Y);

  Brush := TGPLinearGradientBrush.Create(RectBrush, C1, C2, LinearGradientModeVertical);

  Graphics.FillRectangle(Brush, Rect);



  Graphics.TranslateTransform(Rect.Width + Rect.X, -Graphics.Transform.OffsetY);

  Brush := TGPLinearGradientBrush.Create(RectBrush, C1, C2, LinearGradientModeForwardDiagonal);

  Graphics.FillRectangle(Brush, Rect);



  Graphics.TranslateTransform(0, Rect.Height + Rect.Y);

  Brush := TGPLinearGradientBrush.Create(RectBrush, C1, C2, LinearGradientModeBackwardDiagonal);

  Graphics.FillRectangle(Brush, Rect);

end;


 
   

测试二:


uses GdiPlus;



procedure TForm1.FormPaint(Sender: TObject);

const

  C1 = $FFFF0000;

  C2 = $FF0000FF;

var

  Graphics: IGPGraphics;

  Rect, RectBrush: TGPRect;

  Brush: IGPLinearGradientBrush;

begin

  Graphics := TGPGraphics.Create(Canvas.Handle);

  Rect.Initialize(10, 10, 200, 150);

  RectBrush.Initialize(Rect.X + Rect.Width div 8,

                       Rect.Y + Rect.Height div 8,

                       Rect.Width div 4,

                       Rect.Height div 4);



  Brush := TGPLinearGradientBrush.Create(RectBrush, C1, C2, 0);

  Graphics.FillRectangle(Brush, Rect);



  Graphics.TranslateTransform(0, Rect.Height + Rect.Y);

  Brush := TGPLinearGradientBrush.Create(RectBrush, C1, C2, 90);

  Graphics.FillRectangle(Brush, Rect);



  Graphics.TranslateTransform(Rect.Width + Rect.X, -Graphics.Transform.OffsetY);

  Brush := TGPLinearGradientBrush.Create(RectBrush, C1, C2, 45);

  Graphics.FillRectangle(Brush, Rect);



  Graphics.TranslateTransform(0, Rect.Height + Rect.Y);

  Brush := TGPLinearGradientBrush.Create(RectBrush, C1, C2, 135);

  Graphics.FillRectangle(Brush, Rect);

end;


 
   

你可能感兴趣的:(dip)