zoukankan      html  css  js  c++  java
  • 再学 GDI+[66]: 路径画刷(6) SetInterpolationColors、GetRectangle

    本例效果图:



    代码文件:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;
    
    type
      TForm1 = class(TForm)
        procedure FormPaint(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    uses GDIPOBJ, GDIPAPI;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      g : TGPGraphics;
      path: TGPGraphicsPath;
      pb: TGPPathGradientBrush;
      rt: TGPRect;
    const
      pts: array[0..2] of TGPPoint = ((X:90; Y:10), (X:10; Y:160), (X:160; Y:160));
      colors: array[0..2] of TGPColor = (aclGreen, aclAqua, aclBlue);
      pos: array[0..2] of Single = (0.0, 0.25, 1.0); {颜色位置需要 >=0、<=1, 是百分比}
    begin
      {三角}
      g := TGPGraphics.Create(Canvas.Handle);
      path := TGPGraphicsPath.Create;
      path.AddPolygon(PGPPoint(@pts), Length(pts));
      pb:= TGPPathGradientBrush.Create(path);
      pb.SetInterpolationColors(@colors, @pos, Length(colors)); {SetInterpolationColors}
      g.FillPath(pb, path);
    
      {矩形}
      pb.GetRectangle(rt); {GetRectangle}
      path.Reset;
      path.AddRectangle(rt);
      pb.Free;
      pb:= TGPPathGradientBrush.Create(path);
      pb.SetInterpolationColors(@colors, @pos, Length(colors));
      g.TranslateTransform(160, 0);
      g.FillPath(pb, path);
    
      {椭圆}
      path.Reset;
      path.AddEllipse(rt);
      pb.Free;
      pb:= TGPPathGradientBrush.Create(path);
      pb.SetInterpolationColors(@colors, @pos, Length(colors));
      g.TranslateTransform(160, 0);
      g.FillPath(pb, path);
    
      pb.Free;
      path.Free;
      g.Free;
    end;
    
    end.
    
    窗体文件:
    object Form1: TForm1
      Left = 0
      Top = 0
      Caption = 'Form1'
      ClientHeight = 164
      ClientWidth = 491
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      Position = poDesktopCenter
      OnPaint = FormPaint
      PixelsPerInch = 96
      TextHeight = 13
    end
    
  • 相关阅读:
    Python笔记17(Django之路由系统)
    Python笔记16(Django介绍与安装)
    Python笔记16(Web框架本质)
    序列的区间操作
    并查集(入门)
    (补题 Uva 3027)Corporative Network
    (补题 cf 1167C)News Distribution
    (补题 CF 1013B 模拟)And
    (补题 CF 1234C)Pipes
    (补题 POJ 1679 次小生成树)The Unique MST
  • 原文地址:https://www.cnblogs.com/del/p/1231754.html
Copyright © 2011-2022 走看看