C# WinForm GDI+ 全套绘图API+C# WinForm GDI+ 五角星绘制 + 发光文字+WinForm GDI+ 完整画板+SunnyUI 窗体跳转 + 动态仪表盘、温度计

发布时间:2026/8/7 11:48:51
C# WinForm GDI+ 全套绘图API+C# WinForm GDI+ 五角星绘制 + 发光文字+WinForm GDI+ 完整画板+SunnyUI 窗体跳转 + 动态仪表盘、温度计 C# WinForm GDI 全套绘图API一、GDI 核心概述GDIWindows 图形设备接口用于 WinForm 窗体自定义绘制图形、图片、文字、路径。所有绘图操作必须写在 Paint 事件中窗口刷新、缩放、置顶时会自动重绘避免画面消失。核心命名空间System.Drawing、System.Drawing.Drawing2D二、全局绘图质量优化方法通用必考所有绘图前调用解决锯齿、模糊、失真问题所有面板绘制通用。// 统一设置画布高质量绘制、抗锯齿、高清插值 public void SetQuailty(Graphics g) { // 抗锯齿消除线条锯齿 g.SmoothingMode System.Drawing.Drawing2D.SmoothingMode.AntiAlias; // 高质量图像合成 g.CompositingQuality System.Drawing.Drawing2D.CompositingQuality.HighQuality; // 双三次插值图片、图形更清晰 g.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; }三大属性作用简答题必背SmoothingMode.AntiAlias抗锯齿线条平滑CompositingQuality.HighQuality图层合成高质量InterpolationMode.HighQualityBicubic图像缩放高清无模糊三、四种获取画布Graphics的方式考点// 1. 系统自动传入Paint事件推荐、最稳定 Graphics g e.Graphics; // 2. 从当前窗体创建画布 Graphics g this.CreateGraphics(); // 3. 从指定控件Panel创建画布本案例使用 Graphics g panel1.CreateGraphics(); // 4. 从图片对象创建画布绘图到图片 Graphics g Graphics.FromImage(图片对象);四、模块1绘制直线 三角形Panel1核心APIDrawLine(画笔, 点1, 点2)原理多个直线首尾拼接形成闭合三角形图形private void panel1_Paint(object sender, PaintEventArgs e) { // 获取当前触发绘制的Panel画布 Graphics g (sender as Panel).CreateGraphics(); SetQuailty(g); // 定义三支不同颜色画笔 Pen pen1 new Pen(Color.Red, 1f); Pen pen2 new Pen(Color.Green, 1f); Pen pen3 new Pen(Color.Blue, 1f); // 三角形三个顶点自适应面板居中 Point[] points { new Point(this.panel1.Width/2,0), new Point(0,this.panel1.Height/2), new Point(panel1.Width,this.panel1.Height/2), }; // 三条直线拼接成三角形 g.DrawLine(pen1, points[0], points[1]); g.DrawLine(pen2, points[1], points[2]); g.DrawLine(pen3, points[2], points[0]); }五、模块2绘制矩形 四段圆弧Panel2核心APIFillBrush(笔刷, 矩形)填充矩形底色DrawArc(画笔, 矩形, 起始角度, 跨度角度)绘制圆弧GDI坐标系规则0度水平向右顺时针旋转负值逆时针private void panel2_Paint(object sender, PaintEventArgs e) { Graphics g panel2.CreateGraphics(); SetQuailty(g); Pen p1 new Pen(Color.Red, 5f); // 定义外接矩形 Rectangle rect new Rectangle(20,20,100,100); // 黄色填充矩形底色 Brush brush new SolidBrush(Color.Yellow); g.FillRectangle(brush, rect); // 四段圆弧拼成圆形轮廓0-90、90-180、180-270、270-360 g.DrawArc(p1,rect,0,90); g.DrawArc(p1, rect, 90, 90); g.DrawArc(p1, rect, 180, 90); g.DrawArc(p1, rect, 270, 90); }六、模块3绘制本地图片Panel3核心APIDrawImage(图片, 绘制矩形区域)private void panel3_Paint(object sender, PaintEventArgs e) { Graphics g panel3.CreateGraphics(); SetQuailty(g); // 读取本地图片路径 string path C:\Users\AS\Desktop\1.jpg; Image image Image.FromFile(path); // 自适应铺满Panel Rectangle rect new Rectangle(0, 0, panel3.Width, panel3.Height); g.DrawImage(image, rect); }注意路径必须正确支持jpg/png等常规图片格式七、模块4绘制任意多边形Panel4核心APIDrawPolygon(画笔, 顶点数组)自动根据顶点数组首尾闭合生成不规则多边形private void panel4_Paint(object sender, PaintEventArgs e) { Graphics g panel4.CreateGraphics(); SetQuailty(g); Pen p1 new Pen(Color.Red); // 自定义多边形顶点 Point[] points new Point[] { new Point(panel4.Width/2,0), new Point(0,panel4.Height/2), new Point(0,panel4.Height-5), new Point(panel4.Width - 5,panel4.Height-5), new Point(panel4.Width-5,panel4.Height/2-5), }; // 绘制闭合多边形 g.DrawPolygon(p1,points); }八、模块5绘制饼图扇形Panel5核心APIFillPie(笔刷, 矩形, 起始角度, 跨度角度)实心扇形四段不同颜色扇形拼接成完整圆饼图private void panel5_Paint(object sender, PaintEventArgs e) { Graphics graphics panel5.CreateGraphics(); SetQuailty(graphics); // 多色笔刷 Brush brush1 new SolidBrush(Color.Yellow); Brush brush2 new SolidBrush(Color.Red); Brush brush3 new SolidBrush(Color.Blue); Brush brush4 new SolidBrush(Color.Green); Rectangle rect new Rectangle(30,30,100,100); // 四段扇形拼接整圆 graphics.FillPie(brush1,rect,0,90); graphics.FillPie(brush2, rect, 90, 90); graphics.FillPie(brush3, rect, 180, 90); graphics.FillPie(brush4, rect, 270, 90); }九、模块6绘制平滑曲线 椭圆Panel6核心APIDrawCurve(画笔, 点数组)平滑贝塞尔曲线DrawEllipse(画笔, 矩形)根据外接矩形画椭圆private void panel6_Paint(object sender, PaintEventArgs e) { Graphics graphics panel6.CreateGraphics(); SetQuailty(graphics); Pen p new Pen(Color.GreenYellow); // 曲线控制点 Point[] points { new Point(0,panel6.Height), new Point(panel6.Width/10,panel6.Height/10), new Point(panel6.Width/2,panel6.Height/2), new Point(panel6.Width/10*8,panel6.Height/10), new Point(panel6.Width,panel6.Height) }; graphics.DrawCurve(p,points); graphics.DrawEllipse(p, new Rectangle(30,30,100,50)); }十、模块7文字绘制 渐变笔刷Panel7核心APIMeasureString(文字, 字体)测量文字宽高文字居中必备DrawString(文字, 字体, 笔刷, X, Y)绘制文字LinearGradientBrush线性渐变笔刷private void panel7_Paint(object sender, PaintEventArgs e) { Graphics graphics panel7.CreateGraphics(); SetQuailty(graphics); // 定义字体 Font font new Font(宋体, 18); // 测量文字尺寸 SizeF size graphics.MeasureString(中华人民共和国,font); Point p1 new Point(0, 0); PointF p2 new PointF(size.Width, size.Height); PointF p3 new PointF(280, 80); // 单色笔刷、渐变笔刷 Brush b1 new SolidBrush(Color.Red); Brush b2 new LinearGradientBrush(p1, p2, Color.Red, Color.Blue); Brush b3 new LinearGradientBrush(p1, p3, Color.Red, Color.Blue); // 绘制渐变文字、纯色文字 graphics.DrawString(中华人民共和国, font, b3, 0, 0); graphics.DrawString(中华人民共和国,font,b1,0,80); }十一、模块8路径绘图自定义组合图形Panel8核心APIGraphicsPath自定义绘图路径可以组合直线、矩形、圆形、圆弧形成复杂自定义复合图形private void panel8_Paint(object sender, PaintEventArgs e) { Graphics graphics panel8.CreateGraphics(); SetQuailty(graphics); GraphicsPath path new GraphicsPath(); // 第一个路径直角折线图形 path.StartFigure();//开启路径 path.AddLine(30,30,100,30); path.AddLine(100, 30, 100, 130); path.CloseFigure();//闭合路径 // 第二个路径圆形 path.StartFigure(); path.AddEllipse(100,130,100,100); path.CloseFigure(); // 绘制整体路径 graphics.DrawPath(new Pen(Color.Yellow),path); }路径核心方法StartFigure()开启新路径CloseFigure()闭合当前路径DrawPath()渲染所有路径图形十二、GDI 必考知识点汇总1. 两大核心对象Pen 画笔绘制线条、轮廓颜色、粗细Brush 笔刷填充图形内部纯色、渐变、纹理2. 高频绘图API线条DrawLine多边形DrawPolygon圆弧DrawArc椭圆/圆DrawEllipse曲线DrawCurve图片DrawImage文字DrawString扇形FillPie自定义路径GraphicsPath3. 坐标系规则原点(0,0)控件左上角X轴向右递增Y轴向下递增圆弧角度0度向右顺时针旋转4. 易错点绘图代码必须写在 Paint 事件否则窗口刷新图形消失不开启抗锯齿图形会严重锯齿模糊渐变笔刷、路径绘图需手动开启/闭合路径测量文字尺寸是文字居中排版的核心原理C# WinForm GDI 五角星绘制 发光文字一、项目简介本案例基于 GDI 绘图技术实现三种经典绘图效果是 WinForm 图形编程期末核心考点Panel1固定坐标顶点绘制实心五角星静态硬编码写法Panel2三角函数动态算法绘制标准居中五角星通用数学算法Panel3多层偏移叠加实现文字发光特效字体渲染特效核心命名空间System.Drawing、System.Drawing.Text二、知识点前置铺垫1. GDI 绘图规则所有绘图逻辑推荐写在Paint 事件中窗口刷新、缩放不会丢失图形e.Graphics系统自带画布稳定不闪烁、永久保留控件.CreateGraphics()临时画布窗口重绘后图形消失原生代码写法保留演示2. 核心绘图方法FillPolygon(笔刷, 点数组)填充闭合多边形DrawPolygon(画笔, 点数组)绘制多边形轮廓边线DrawString(文字, 字体, 笔刷, X, Y)绘制文字三、模块一固定坐标绘制五角星Panel1原理说明手动定义五角星 10 个内外顶点坐标通过点数组闭合填充写法简单、无需数学计算适合基础入门。完整代码/// summary /// 固定坐标静态绘制红色实心五角星 /// /summary private void panel1_Paint(object sender, PaintEventArgs e) { // 获取系统画布稳定重绘 Graphics g e.Graphics; // 手动定义五角星10个顶点坐标 Point[] points new Point[] { new Point(100, 20), new Point(120, 80), new Point(180, 80), new Point(130, 120), new Point(150, 180), new Point(100, 140), new Point(50, 180), new Point(70, 120), new Point(20, 80), new Point(80, 80) }; // 填充红色实心五角星 g.FillPolygon(new SolidBrush(Color.Red), points); }优缺点总结优点代码简单、直观易懂、无需数学算法缺点坐标固定、无法自适应面板大小、不能修改缩放四、模块二三角函数动态绘制标准五角星重难点原理说明利用极坐标转直角坐标公式自动计算五角星顶点实现面板居中显示。核心技巧角度步长 ×2隔点取值形成标准五角星凹陷结构。完整代码原生代码保留详细注释/// summary /// 数学算法动态生成居中五角星 /// /summary private void panel2_Paint(object sender, PaintEventArgs e) { // 创建面板临时画布 Graphics g panel2.CreateGraphics(); Pen pen new Pen(Color.Red); // 轮廓画笔红色边线 Brush brush Brushes.Yellow; // 填充笔刷黄色底色 int numbers 5; // 五角星尖角数量 PointF[] points new PointF[numbers];// 存储5个顶点坐标 float radious 90; // 五角星外接圆半径控制大小 // 计算面板中心点实现图形居中 PointF center new PointF(panel2.Width / 2F, panel2.Height / 2F); // 初始角度-90°让五角星尖角朝上12点钟方向 double angle -Math.PI / 2; // 单个顶点均分角度360°/5 72° double angleIncre Math.PI * 2 / numbers; // 循环计算每一个顶点坐标 for (int i 0; i numbers; i) { // 极坐标转直角坐标公式 double x center.X radious * Math.Cos(angle); double y center.Y radious * Math.Sin(angle); points[i] new PointF((float)x, (float)y); // 核心步长*2 隔点取值生成五角星而非五边形 angle angleIncre * 2; } g.FillPolygon(brush, points); // 填充五角星内部 g.DrawPolygon(pen, points); // 绘制五角星轮廓 }核心必考公式与逻辑坐标换算X 圆心X 半径 * Cos(角度)坐标换算Y 圆心Y 半径 * Sin(角度)五角星关键angle angleIncre * 2隔点取值是区分五边形和五角星的核心-Math.PI/2矫正起始角度尖角朝上符合视觉规范五、模块三GDI 发光文字特效原理说明通过多层微小偏移绘制阴影文字叠加出模糊发光效果最后绘制原色文字覆盖顶层搭配字体抗锯齿实现立体发光文字。完整代码原生保留逐行注释/// summary /// 多层偏移叠加实现文字发光特效 /// /summary private void panel3_Paint(object sender, PaintEventArgs e) { // 创建临时画布 Graphics graphics panel3.CreateGraphics(); // 定义字体样式、大小 Font font new Font(宋体, 56); // 字体抗锯齿消除文字毛刺、模糊锯齿 graphics.TextRenderingHint System.Drawing.Text.TextRenderingHint.AntiAlias; // 第一层绘制多层黑色偏移阴影模拟发光光晕 using (Brush g new SolidBrush(Color.Black)) { graphics.DrawString(邢志勇, font, g, 10 - 2, 100 2); graphics.DrawString(邢志勇, font, g, 10 2, 100 - 2); graphics.DrawString(邢志勇, font, g, 10 - 3, 100 3); graphics.DrawString(邢志勇, font, g, 10 3, 100 - 3); } // 第二层绘制顶层红色原色文字 using (Brush g new SolidBrush(Color.Red)) { graphics.DrawString(邢志勇, font, g, 10, 100); } }发光特效核心逻辑多方位微小像素偏移形成模糊外边框底层阴影 顶层原色文字叠加打造发光质感TextRenderingHint.AntiAlias字体专属抗锯齿渲染using语句自动释放笔刷资源避免内存泄漏七、期末高频考点总结1. 两种五角星绘制区别固定坐标法静态、简单、不可自适应三角函数法动态、居中、可改大小、通用算法考试重点2. 五角星算法核心均分角度后步长*2 隔点取值是生成五角星的唯一核心逻辑区别于普通正多边形。3. 发光文字原理多层偏移阴影叠加 字体抗锯齿 顶层原色覆盖属于GDI经典文字特效方案。4. 资源优化考点using语句自动释放笔刷、画笔、字体资源解决GDI内存泄漏问题。WinForm GDI 完整画板一、项目整体功能介绍本案例是 WinForm 经典 GDI 手绘画板项目包含全套核心功能是期末大作业高频原题自由手绘线条鼠标拖拽绘图橡皮擦擦除功能画笔三档粗细小号/中号/大号自定义画笔颜色颜色选择器打开本地图片至画板保存画板绘制内容为图片一键清空画布二、核心原理必考双画布机制本项目灵魂窗体画布 g负责显示图片、刷新界面内存位图 bmp所有绘制、擦除全部画在内存图片上每次绘制完成把 bmp 刷新到窗体画布 →解决重绘消失、闪烁问题鼠标绘图逻辑MouseDown按下左键 → 开启绘制、记录起始坐标MouseMove按住移动 → 不断画线/擦除、实时刷新MouseUp松开鼠标 → 结束绘制三、全局变量 静态数据类1. 全局变量// 是否正在绘制鼠标按下标记 bool paintStart false; // 窗体显示画布 Graphics g null; // 内存位图所有绘制都保存在这里核心防止重绘丢失 Bitmap bmp null;2. 全局静态数据类统一存储画笔参数/// summary /// 全局临时数据存储类 /// /summary public static class TempData { public static Point PrePoint { get; set; } // 鼠标上一次坐标 public static Color PenColor { get; set; } Color.Black; // 默认画笔黑色 public static int LineWidth { get; set; } // 画笔粗细 }四、窗体初始化逻辑public Form1() { InitializeComponent(); // 初始化面板画布 g panel2.CreateGraphics(); // 创建和面板一样大的空白内存图片 bmp new Bitmap(panel2.Width, panel2.Height); // 将空白图片渲染到面板上 g.DrawImage(bmp, new Point(0, 0)); }作用程序启动生成空白画布具备绘图基础。五、菜单栏功能模块1. 文件-打开加载本地图片到画板private void 文件FToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog ofd new OpenFileDialog(); ofd.Filter 图片(*.jpg)|*.jpg; if (ofd.ShowDialog() DialogResult.OK) { // 读取选择的图片 bmp new Bitmap(ofd.FileName); // 清空原有画布 g.Clear(Color.White); // 把新图片绘制到面板 g.DrawImage(bmp, new Point(0, 0)); } }2. 文件-保存保存画板绘制内容private void 保存SToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog ofd new SaveFileDialog(); ofd.Filter 图片(*.jpg)|*.jpg; if (ofd.ShowDialog() DialogResult.OK) { try { // 直接保存内存位图所有绘制内容都在bmp里 bmp.Save(ofd.FileName); } catch (Exception) { MessageBox.Show(保存的文件路径或者文件名称出现问题); } } }3. 画笔粗细切换小/中/大// 小号画笔 宽度2 private void 小号画笔ToolStripMenuItem_Click(object sender, EventArgs e) { TempData.LineWidth 2; 小号画笔ToolStripMenuItem.Checked true; 中号画笔ToolStripMenuItem.Checked false; 大号画笔ToolStripMenuItem.Checked false; } // 中号画笔 宽度6 private void 中号画笔ToolStripMenuItem_Click(object sender, EventArgs e) { TempData.LineWidth 6; 小号画笔ToolStripMenuItem.Checked false; 中号画笔ToolStripMenuItem.Checked true; 大号画笔ToolStripMenuItem.Checked false; } // 大号画笔 宽度10 private void 大号画笔ToolStripMenuItem_Click(object sender, EventArgs e) { TempData.LineWidth 10; 小号画笔ToolStripMenuItem.Checked false; 中号画笔ToolStripMenuItem.Checked false; 大号画笔ToolStripMenuItem.Checked true; }4. 自定义画笔颜色private void 颜色ToolStripMenuItem_Click(object sender, EventArgs e) { // 打开系统颜色选择器 ColorDialog cd new ColorDialog(); if (cd.ShowDialog() DialogResult.OK) { // 赋值全局画笔颜色 TempData.PenColor cd.Color; } }5. 清空画布private void 清空ToolStripMenuItem_Click(object sender, EventArgs e) { // 清空窗体画布为白色 g.Clear(Color.White); // 重新创建空白内存图片彻底清空绘制内容 bmp new Bitmap(panel2.Width, panel2.Height); // 刷新显示 g.DrawImage(bmp, new Point(0, 0)); }六、鼠标核心绘图三大事件重中之重1. 鼠标按下开启绘制、记录起点private void panel2_MouseDown(object sender, MouseEventArgs e) { // 判断按下鼠标左键 if (e.Button MouseButtons.Left) { paintStart true; // 记录初始坐标 TempData.PrePoint new Point(e.X, e.Y); } }2. 鼠标移动实时绘制 / 擦除private void panel2_MouseMove(object sender, MouseEventArgs e) { // 未按下鼠标直接返回 if (!paintStart) { return; } // 重点在内存图片上绘图永久保存绘制内容 Graphics g2 Graphics.FromImage(bmp); Pen p new Pen(TempData.PenColor, TempData.LineWidth); // 当前鼠标坐标 Point pt2 new Point(e.X, e.Y); // 画笔模式画线 if (rbPen.Checked paintStart) { // 从上一个点绘制到当前点 g2.DrawLine(p, TempData.PrePoint, pt2); // 更新上一个点实现连续画线 TempData.PrePoint pt2; // 刷新到面板显示 g.DrawImage(bmp, 0, 0); } // 橡皮擦模式填充背景色覆盖画面 else if (rbEraser.Checked paintStart) { // 用面板背景色覆盖区域实现擦除效果 g2.FillRectangle(new SolidBrush(panel2.BackColor), e.X, e.Y, TempData.LineWidth 20, TempData.LineWidth 20); g.DrawImage(bmp, 0, 0); } }3. 鼠标松开结束绘制private void panel2_MouseUp(object sender, MouseEventArgs e) { // 关闭绘制标记 paintStart false; }七、项目核心考点总结考试必背1. 双缓冲绘图原理所有绘制先画在Bitmap 内存图片上再整体刷新到控件画布解决窗口重绘、最小化、切换界面导致的绘图消失问题。2. 连续画线原理MouseDown 记录起点MouseMove 不断用上一个点到当前点连线不断更新坐标形成连续顺滑线条。3. 橡皮擦原理并非真正擦除而是用控件背景色填充矩形覆盖原有绘制内容视觉上实现擦除。4. 数据静态类作用统一全局画笔颜色、粗细、坐标数据方便所有事件共用参数解耦代码。5. 打开保存核心打开读取图片赋值给 Bitmap保存直接 Save 内存 Bitmap所有绘制都保存在这里八、易错点总结只在控件画布绘图窗口重绘内容会消失必须借助 Bitmap 存图连续画线必须更新 PrePoint否则只会画固定直线橡皮擦必须使用面板背景色不能用白色适配任意背景保存异常捕获防止路径非法、文件占用报错SunnyUI 窗体跳转 动态仪表盘、温度计一、项目功能概述本案例基于SunnyUI WinForm 开源UI框架实现两个核心功能1. 主窗体UIForm点击按钮跳转登录窗体UILoginForm2. Timer 定时器动态驱动圆形仪表盘角度、温度计数值实时自增变化3. 全局设置 SunnyUI 绿色主题样式适用场景WinForm 美化界面、数据动态展示、多窗体跳转基础模板。二、知识点前置1. SunnyUI 核心窗体基类UIForm普通美化主窗体替代原生 FormUILoginForm专用登录样式窗体自带登录界面布局2. 核心控件uiStyleManager全局样式管理器一键切换主题uiRoundMeter圆形仪表盘通过 Angle 属性控制角度uiThermometer温度计控件通过 Value 属性控制数值高度Timer定时器按固定间隔执行动态刷新三、登录窗体 Form2 代码解析继承自UILoginForm自带登录页面 UI 样式无需手动布局。using Sunny.UI; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace SunnyUI { /// summary /// 登录窗体继承 SunnyUI 专用登录窗体基类 /// /summary public partial class Form2 : UILoginForm { public Form2() { // 初始化窗体控件 InitializeComponent(); } } }四、主窗体 Form1 完整代码 逐行注释using Sunny.UI; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace SunnyUI { /// summary /// 主功能窗体SunnyUI 美化窗体 /// /summary public partial class Form1 : UIForm { // 定义全局自增变量用于动态赋值仪表盘、温度计 private int value; public Form1() { InitializeComponent(); // 设置全局UI样式为绿色主题 uiStyleManager1.Style Sunny.UI.UIStyle.Green; } /// summary /// 按钮点击打开登录窗体 Form2 /// /summary private void uiButton1_Click(object sender, EventArgs e) { // 实例化新窗体 Form2 f new Form2(); // 非模态窗口显示不阻塞当前窗口 f.Show(); } /// summary /// 定时器Tick事件定时动态刷新控件数据 /// /summary private void timer1_Tick(object sender, EventArgs e) { // 数值自增 value; // 仪表盘角度 数值 * 10放大角度变化动画更明显 uiRoundMeter1.Angle value * 10; // 温度计绑定自增数值动态上涨 uiThermometer1.Value value; } } }五、核心功能原理详解1、UI 主题样式设置uiStyleManager1.Style UIStyle.Green作用一键修改当前项目所有 SunnyUI 控件的主题颜色支持绿色、蓝色、深色、亮色等多种内置样式。2、多窗体跳转原理new Form2()创建登录窗体实例f.Show()非模态打开新窗体主窗体不关闭、不阻塞3、定时器动态数据展示重点全局变量 value 持续自增作为动态数据源uiRoundMeter1.Angle控制仪表盘指针旋转角度uiThermometer1.Value控制温度计液位高度定时器每隔固定毫秒执行一次实现动态动画效果六、考试/作业高频考点SunnyUI 窗体区别UIForm 普通窗体、UILoginForm 登录专用窗体样式内置封装样式管理器uiStyleManager 实现全局换肤无需逐个改控件颜色动态控件原理依靠 Timer 定时器 全局变量自增刷新控件属性实现动画窗体跳转Show() 非模态窗口多个窗口可同时存在仪表盘靠 Angle 角度驱动、温度计靠 Value 数值驱动七、优化拓展可选加分可以自行添加边界判断防止数值无限增大溢出if(value 36) { value 0; }加入代码后仪表盘旋转一圈自动重置循环动画更完美。