本例效果图:
![](https://www.cnblogs.com/images/cnblogs_com/del/134145/o_85274.gif)
![](https://www.cnblogs.com/images/cnblogs_com/del/134145/o_85274.gif)
System 单元下的公用函数目录unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Button1Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} const {把五环的颜色定义为常量数组} Colors: array[0..4] of TColor = (clBlue, clBlack, clRed, clYellow, clGreen); var ci: Integer; {用作颜色序号} procedure TForm1.FormCreate(Sender: TObject); begin Button1.Caption := '重绘'; Self.Color := clWhite; Canvas.Pen.Width := 5; end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); const r = 30; {圆半径} var radian: Double; {记录弧度; Sin、Cos 函数需要弧度做参数; 弧度 = 角度 * Pi/180} i,a,b: Integer; begin Canvas.MoveTo(X, Y-r); Canvas.Pen.Color := Colors[ci]; for i := 1 to 360 do begin radian := i * (Pi/180); {获取弧度} a := X + Round(Sin(radian) * r); {用 Sin 函数获取横坐标} b := Y - Round(Cos(radian) * r); {用 Cos 函数获取纵坐标} Canvas.LineTo(a, b); {绘制} Application.ProcessMessages; {不要影响其他操作} Sleep(3); {等 3 毫秒} end; Inc(ci); if ci = 5 then ci := 0; end; procedure TForm1.Button1Click(Sender: TObject); begin ci := 0; Repaint; end; end.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步