zoukankan      html  css  js  c++  java
  • GdiPlus[18]: IGPPathGradientBrush 之 CenterColor、SurroundColors


    最简单的 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;
    

  • 相关阅读:
    springboot-web进阶(四)——单元测试
    Java Programming Language Enhancements
    浅谈现代编程语言语法与标准库紧绑定现象
    Objective-C如何自己实现一个基于数组下标的属性访问模式
    Objective-C如何自己实现一个for-each语法形式
    Objective-C中的self与LLVM Clang新引入的instancetype
    在Win7下玩PC游戏发生类似d3d9x_43.dll找不到的情况
    x86架构64位模式下的寄存器列表
    OpenCL如何判定一个work-group的最大Local Memory大小
    关于一个GPGPU优化中Bank Conflict的讨论
  • 原文地址:https://www.cnblogs.com/del/p/1624591.html
Copyright © 2011-2022 走看看