• GdiPlus[14]: IGPLinearGradientBrush 之 Blend



    IGPLinearGradientBrush.Blend 属性对应一个 IGPBlend 对象;

    TGPBlend.Create(Factors, Positions); 中的两个参数都是 Single 类型的数组,
    Factors 颜色强度因子, Positions 是位置偏移比例.

    对于两种颜色的渐变, 上面两个数组都应是三个元素构成; 默认效果是 [0, 0.5, 1].

    测试效果图:



    测试代码:

    uses GdiPlus;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      Graphics: IGPGraphics;
      Rect: TGPRectF;
      Brush: IGPLinearGradientBrush;
      StringFormat: IGPStringFormat;
      Font: IGPFont;
      BrushText: IGPSolidBrush;
    begin
      Graphics := TGPGraphics.Create(Canvas.Handle);
      Rect.Initialize(20, 10, ClientWidth - 40, 30);
      Brush := TGPLinearGradientBrush.Create(Rect, $FFFF0000, $FF0000FF, 0);
    
      StringFormat := TGPStringFormat.Create;
      StringFormat.Alignment := StringAlignmentCenter;
      StringFormat.LineAlignment := StringAlignmentFar;
    
      Font := TGPFont.Create(Canvas.Handle);
      BrushText := TGPSolidBrush.Create($FFCCCCCC);
    
      Brush.Blend := TGPBlend.Create([0, 0.5, 1], [0, 0.5, 1]);
      Graphics.FillRectangle(Brush, Rect);
      Graphics.DrawString('[0, 0.5, 1], [0, 0.5, 1]', Font, Rect, StringFormat, BrushText);
    
      //
      Brush.Blend := TGPBlend.Create([0, 0.5, 1], [0, 0.2, 1]);
      Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
      Graphics.FillRectangle(Brush, Rect);
      Graphics.DrawString('[0, 0.5, 1], [0, 0.2, 1]', Font, Rect, StringFormat, BrushText);
    
      Brush.Blend := TGPBlend.Create([0, 0.5, 1], [0, 0.8, 1]);
      Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
      Graphics.FillRectangle(Brush, Rect);
      Graphics.DrawString('[0, 0.5, 1], [0, 0.8, 1]', Font, Rect, StringFormat, BrushText);
      
      //
      Brush.Blend := TGPBlend.Create([0, 0.2, 1], [0, 0.5, 1]);
      Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
      Graphics.FillRectangle(Brush, Rect);
      Graphics.DrawString('[0, 0.2, 1], [0, 0.5, 1]', Font, Rect, StringFormat, BrushText);
    
      Brush.Blend := TGPBlend.Create([0, 0.8, 1], [0, 0.5, 1]);
      Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
      Graphics.FillRectangle(Brush, Rect);
      Graphics.DrawString('[0, 0.8, 1], [0, 0.5, 1]', Font, Rect, StringFormat, BrushText);
      
      //
      Brush.Blend := TGPBlend.Create([0, 0.2, 1], [0, 0.2, 1]);
      Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
      Graphics.FillRectangle(Brush, Rect);
      Graphics.DrawString('[0, 0.2, 1], [0, 0.2, 1]', Font, Rect, StringFormat, BrushText);
    
      Brush.Blend := TGPBlend.Create([0, 0.8, 1], [0, 0.8, 1]);
      Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
      Graphics.FillRectangle(Brush, Rect);
      Graphics.DrawString('[0, 0.8, 1], [0, 0.8, 1]', Font, Rect, StringFormat, BrushText);
    
      //
      Brush.Blend := TGPBlend.Create([0, 0.2, 1], [0, 0.8, 1]);
      Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
      Graphics.FillRectangle(Brush, Rect);
      Graphics.DrawString('[0, 0.2, 1], [0, 0.8, 1]', Font, Rect, StringFormat, BrushText);
    
      Brush.Blend := TGPBlend.Create([0, 0.8, 1], [0, 0.2, 1]);
      Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
      Graphics.FillRectangle(Brush, Rect);
      Graphics.DrawString('[0, 0.8, 1], [0, 0.2, 1]', Font, Rect, StringFormat, BrushText);
    end;
    
  • 相关阅读:
    myslq的更新丢失实例
    特价版线程池ThreadPoolExecutor实现
    通过SCP实现Linux服务器和本地Win10机器的文件上传下载
    数据库连接池的一种实现方案
    JDBC的驱动注册浅析
    Mysql数据库的JDBC查询实例
    RabbitMQ的安装
    Rabbitmq—基础
    Datatable某一列转List
    js Jquery 数据移除元素/删除元素
  • 原文地址:https://www.cnblogs.com/del/p/1624117.html
Copyright © 2020-2023  润新知