zoukankan      html  css  js  c++  java
  • 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;
    
  • 相关阅读:
    for() 和$.each()的用法区别
    HTML5 UTF-8 中文乱码
    chrome,opera..通过file协议浏览html代码时,发送的ajax请求本地文件,会报跨域错误
    局部方法$("html").load()和全局方法$.get()、$.post()
    iOS开发--动画篇之layout动画深入
    iOS 开发--转场动画
    iOS开发--泛型
    Python十分钟学会
    iOS 开发--动画
    一个简单的ObjC和JavaScript交互工具
  • 原文地址:https://www.cnblogs.com/del/p/1624117.html
Copyright © 2011-2022 走看看