WinForm 基于 GDI+ 自定义控件简单仿 LED 小示例

参考

环境

软件/系统 版本 说明
Windows windows 10 专业版 22H2 64 位操作系统, 基于 x64 的处理器
Microsoft Visual Studio Community 2022 (64 位) - Current 版本 17.14.10
.NET Framework 4.8

预览

实现功能有:公开控件属性、控件属性更新重绘、控件属性分组与说明、鼠标按下抬起事件等

  • 运行界面
    QQ202584-123120-HD[00h00m00s-00h00m07s]
  • 可视化编辑器控件属性
    image

正文

  1. LyauiBtnControl.cs
    	using System;
    	using System.Collections.Generic;
    	using System.ComponentModel;
    	using System.Data;
    	using System.Drawing;
    	using System.Drawing.Drawing2D;
    	using System.Linq;
    	using System.Text;
    	using System.Windows.Forms;
    
    	namespace DemoControls
    	{
    		public partial class LyauiBtnControl : Control
    		{
    			public LyauiBtnControl()
    			{
    				InitializeComponent();
    			}
    
    			private Color _color = Color.Green;
    			/// <summary>
    			/// 颜色
    			/// </summary>
    			[Category("Settings"), Description("颜色")]
    			public Color Color
    			{
    				get { return _color; }
    				set
    				{
    					_color = value;
    					// 重绘
    					Invalidate();
    				}
    			}
    
    			protected override void OnPaint(PaintEventArgs pe)
    			{
    				base.OnPaint(pe);
    				// 获取画布
    				Graphics g = pe.Graphics;
    				// 防止闪烁
    				g.SmoothingMode = SmoothingMode.AntiAlias;
    				// 画刷
    				using (SolidBrush solidBrush = new SolidBrush(_color))
    				{
    					// 矩形不能够太靠近边框
    					Rectangle rectangle = new Rectangle(1, 1, Width - 2, Height - 2);
    					//g.FillRectangle(solidBrush, rectangle);
    					g.FillEllipse(solidBrush, rectangle);
    				}
    			}
    
    			// 鼠标按下
    			protected override void OnMouseDown(MouseEventArgs e)
    			{
    				base.OnMouseDown(e);
    				// 鼠标按下时触发
    				_color = Color.Blue;
    				Invalidate();
    			}
    			// 鼠标抬起
    			protected override void OnMouseUp(MouseEventArgs e)
    			{
    				base.OnMouseUp(e);
    				// 鼠标抬起时触发
    				_color = Color.Green;
    				Invalidate();
    			}
    
    			//protected override void OnMouseEnter(EventArgs e)
    			//{
    			//    base.OnMouseEnter(e);
    			//    // 鼠标进入时触发
    			//    _color = Color.Red;
    			//    Invalidate();
    			//}
    
    			//// 鼠标移出
    			//protected override void OnMouseLeave(EventArgs e)
    			//{
    			//    base.OnMouseLeave(e);
    			//    // 鼠标移出时触发
    			//    _color = Color.Green;
    			//    Invalidate();
    			//}
    			        /// <summary>
    			/// 界面调整后重绘
    			/// </summary>
    			/// <param name="e"></param>
    			protected override void OnResize(EventArgs e)
    			{
    				base.OnResize(e);
    				// 重绘
    				Invalidate();
    			}
    		}
    	}
    
posted @ 2025-08-04 12:35  夏秋初  阅读(29)  评论(0)    收藏  举报