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;
    
  • 相关阅读:
    【JAVA SE基础篇】28.面向对象三大特征之多态
    【JAVA SE基础篇】27.面向对象三大特征之封装
    【JAVA SE基础篇】26.toString()方法和equlas()方法
    【JAVA SE基础篇】25.面向对象三大特征之继承
    【JAVA SE基础篇】24.包的机制和import详解
    ssh框架文件上传下载
    java格式化时间格式
    表单提交后打印后台传过来的数据
    使用ajaxfileupload.js实现文件上传
    JSTL跳出<c:forEach>循环
  • 原文地址:https://www.cnblogs.com/del/p/1624117.html
Copyright © 2011-2022 走看看