• 再学 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
    
  • 相关阅读:
    JS调用摄像头拍照,编辑jscam.swf自定义清晰度,兼容IE
    Hbase 永久 Region-In-Transition 的查错记录
    hbase meta中分区信息错误的记录
    spark aggregateByKey 时 java.lang.OutOfMemoryError: GC overhead limit exceeded
    在 aws emr 上,将 hbase table A 的数据,对 key 做 hash,写到另外一张 table B
    EMR 配置纪录(不断更新)
    使用 JvisualVM 监控 spark executor
    YARN 集群的资源分配
    spark bulkload hbase笔记
    记一个 protobuf 的 jar 包冲突
  • 原文地址:https://www.cnblogs.com/del/p/1231793.html
Copyright © 2020-2023  润新知