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
    
  • 相关阅读:
    安装mysql时 Write configuration file 错误
    Statement和PreparedStatement之间的区别
    Matlab 的fspecial函数用法
    MySql 5.1 在线中文参考手册
    Rational License Key Error 的解决办法
    Admin5论坛营销插件
    actcms发布模块,如何使用?
    博客大巴(BlogBus)
    淘宝评论采集,因为是原创
    忍者X3又添新成员 IIS6批量建站
  • 原文地址:https://www.cnblogs.com/del/p/1231793.html
Copyright © 2011-2022 走看看