zoukankan      html  css  js  c++  java
  • 再学 GDI+[67]: 路径画刷(7) 画个五角星

    本例效果图:



    代码1:
    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);
    const
      pt: TPoint = (X:130; Y:130);
      r = 120;
      colors: array[0..0] of TGPColor = (aclRed);
    var
      g: TGPGraphics;
      p: TGPPen;
      path: TGPGraphicsPath;
      pb: TGPPathGradientBrush;
      pts: array[0..4] of TGPPoint;
      radian: Single;
      i,num: Integer;
    begin
      for i := 0 to 4 do
      begin
        radian := i * (360*2/5) * (Pi/180);
        pts[i].X := pt.X + Round(Sin(radian) * r);
        pts[i].Y := pt.Y - Round(Cos(radian) * r);
      end;
    
      g := TGPGraphics.Create(Canvas.Handle);
      path := TGPGraphicsPath.Create;
      path.AddPolygon(PGPPoint(@pts), Length(pts));
      pb:= TGPPathGradientBrush.Create(path);
    
      num := Length(colors);
      pb.SetSurroundColors(@colors, num);
    
      pb.SetCenterColor(aclYellow);
    
      {描个边}
      p := TGPPen.Create(aclYellow);
      g.SetSmoothingMode(SmoothingModeAntiAlias);
      g.DrawPath(p, path);
    
      g.FillPath(pb, path);
    
      pb.Free;
      path.Free;
      p.Free;
      g.Free;
    end;
    
    end.
    
    代码2:
    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);
    const
      pt: TPoint = (X:130; Y:130);
      r = 120;
      colors: array[0..0] of TGPColor = (aclRed);
    var
      g: TGPGraphics;
      p: TGPPen;
      path: TGPGraphicsPath;
      pb: TGPPathGradientBrush;
      pts: array[0..9] of TGPPoint;
      radian: Single;
      i,num: Integer;
      rx: Single;
    begin
      for i := 0 to 9 do
      begin
        rx := r;
        if Odd(i) then rx := r * (1- (Sqrt(5)-1)/2); {(Sqrt(5)-1)/2 是黄金分割点, 约为 0.618}
        radian := i * (360/10) * (Pi/180);
        pts[i].X := pt.X + Round(Sin(radian) * rx);
        pts[i].Y := pt.Y - Round(Cos(radian) * rx);
      end;
    
      g := TGPGraphics.Create(Canvas.Handle);
      path := TGPGraphicsPath.Create;
      path.AddPolygon(PGPPoint(@pts), Length(pts));
      pb:= TGPPathGradientBrush.Create(path);
    
      num := Length(colors);
      pb.SetSurroundColors(@colors, num);
    
      pb.SetCenterColor(aclYellow);
    
      {描个边}
      p := TGPPen.Create(aclYellow);
      g.SetSmoothingMode(SmoothingModeAntiAlias);
      g.DrawPath(p, path);
    
      g.FillPath(pb, path);
    
      pb.Free;
      path.Free;
      p.Free;
      g.Free;
    end;
    
    end.
    
    窗体文件:
    object Form1: TForm1
      Left = 0
      Top = 0
      Caption = 'Form1'
      ClientHeight = 238
      ClientWidth = 259
      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
    
  • 相关阅读:
    【转】pymongo实现模糊查询
    使用pip安装包提示TLS证书错误解决办法
    sed用法去除行首和行末的中括号
    logstash之filter处理中括号包围的内容
    根据IP查地理位置信息
    shell生成连续天数日期
    linux grep 取出特定字符串并统计个数
    【转】css3实现文字闪烁,改变透明度
    【转】Django中使用POST方法获取POST数据
    [算法]机器人运动范围
  • 原文地址:https://www.cnblogs.com/del/p/1231793.html
Copyright © 2011-2022 走看看