zoukankan      html  css  js  c++  java
  • GdiPlus[16]: IGPLinearGradientBrush 之 SetBlendBellShape、SetBlendTriangularShape


    SetBlendBellShape 方法: 创建基于钟形曲线的渐变过渡过程;

    SetBlendTriangularShape 方法: 创建一个从中心色向两端单个颜色线性过渡的线性渐变过程.

    两个方法好像区别不大.

    SetBlendBellShape 测试效果图:



    SetBlendTriangularShape 测试效果图:



    SetBlendBellShape 测试代码:

    uses GdiPlus;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      Graphics: IGPGraphics;
      Rect: TGPRectF;
      Brush: IGPLinearGradientBrush;
    begin
      Graphics := TGPGraphics.Create(Canvas.Handle);
      Rect.Initialize(10, 10, 120, 150);
      Brush := TGPLinearGradientBrush.Create(Rect, $FFFF0000, $FF0000FF, 0);
    
      Brush.SetBlendBellShape(1);
      Graphics.FillEllipse(Brush, Rect);
    
      Brush.SetBlendBellShape(0.8);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
      
      Brush.SetBlendBellShape(0.5);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
    
      Brush.SetBlendBellShape(0.2);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
    
      Brush.SetBlendBellShape(0);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
    
      //
      Graphics.TranslateTransform(-Graphics.Transform.OffsetX, Rect.Y + Rect.Height);
    
      Brush.SetBlendBellShape(1, 1);
      Graphics.FillEllipse(Brush, Rect);
    
      Brush.SetBlendBellShape(1, 0.8);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
      
      Brush.SetBlendBellShape(1, 0.5);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
    
      Brush.SetBlendBellShape(1, 0.2);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
    
      Brush.SetBlendBellShape(1, 0);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
    end;
    

    SetBlendTriangularShape 测试代码:

    uses GdiPlus;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      Graphics: IGPGraphics;
      Rect: TGPRectF;
      Brush: IGPLinearGradientBrush;
    begin
      Graphics := TGPGraphics.Create(Canvas.Handle);
      Rect.Initialize(10, 10, 120, 150);
      Brush := TGPLinearGradientBrush.Create(Rect, $FFFF0000, $FF0000FF, 0);
    
      Brush.SetBlendBellShape(1);
      Graphics.FillEllipse(Brush, Rect);
    
      Brush.SetBlendTriangularShape(0.8);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
      
      Brush.SetBlendTriangularShape(0.5);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
    
      Brush.SetBlendTriangularShape(0.2);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
    
      Brush.SetBlendTriangularShape(0);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
    
      //
      Graphics.TranslateTransform(-Graphics.Transform.OffsetX, Rect.Y + Rect.Height);
    
      Brush.SetBlendTriangularShape(1, 1);
      Graphics.FillEllipse(Brush, Rect);
    
      Brush.SetBlendTriangularShape(1, 0.8);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
      
      Brush.SetBlendTriangularShape(1, 0.5);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
    
      Brush.SetBlendTriangularShape(1, 0.2);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
    
      Brush.SetBlendTriangularShape(1, 0);
      Graphics.TranslateTransform(Rect.X + Rect.Width, 0);
      Graphics.FillEllipse(Brush, Rect);
    end;
    
  • 相关阅读:
    【arm】using as: GNU assember学习笔记
    【linux】gcc编译选项:-fomit-frame-pointer,-fno-tree-vectorize,-fno-strict-aliasing以及ARM相关选项
    【arm】armv8中通用寄存器的饱和指令实现(对标arm32:ssat,usat,qadd,qsub)
    【shell】常用的几种shell解释器:sh,bash,zsh,ash,csh
    【linux/Tools】Performance Profile Tools——perf and gprof
    【android】如何查看Android设备的CPU架构信息
    【arm】big-LITTLE architecture and How to check core, frequency, features of CPU and memory infos
    【python】创建excel文档.csv
    【mpeg4】MPEG-4 B帧帧间预测模式
    【linux】关于find命令查找的排序规则探索以及排序方法
  • 原文地址:https://www.cnblogs.com/del/p/1624159.html
Copyright © 2011-2022 走看看