当前位置:首页 > 技术教程 > 正文

如何获取所有颜色值?.NET颜色集合与ASP.NET示例代码实现

在 ASP.NET 中获取所有系统预定义的颜色值,可以通过遍历 KnownColor 枚举实现,以下是两种常用方法(Web Forms 和 MVC):

如何获取所有颜色值?.NET颜色集合与ASP.NET示例代码实现 第1张

如何获取所有颜色值?.NET颜色集合与ASP.NET示例代码实现 第2张

方法 1:ASP.NET Web Forms 示例

// ColorsPage.aspx.cs using System; using System.Drawing; using System.Web.UI.WebControls; public partial class ColorsPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // 获取所有非系统颜色(排除菜单高亮等动态颜色) foreach (KnownColor kc in Enum.GetValues(typeof(KnownColor))) { Color color = Color.FromKnownColor(kc); // 跳过系统颜色(如Control, Menu等) if (color.IsSystemColor) continue; // 创建带颜色块的Label Label lbl = new Label { Text = $"{color.Name} (#{color.R:X2}{color.G:X2}{color.B:X2})", BackColor = color, ForeColor = Color.Black, // 文字颜色 BorderStyle = BorderStyle.Solid, BorderWidth = 1, Width = 200, Height = 30, Style = "margin:5px; padding:5px; display:inline-block;" }; // 添加到页面容器 container.Controls.Add(lbl); } } } <!-- ColorsPage.aspx --> <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ColorsPage.aspx.cs" Inherits="YourNamespace.ColorsPage" %> <!DOCTYPE html> <html> <head>所有系统颜色</title> </head> <body> <form id="form1" runat="server"> <div id="container" runat="server"></div> </form> </body> </html>

方法 2:ASP.NET MVC 示例

// ColorsController.cs using System.Collections.Generic; using System.Drawing; using System.Web.Mvc; public class ColorsController : Controller { public ActionResult Index() { var colors = new List<ColorInfo>(); foreach (KnownColor kc in Enum.GetValues(typeof(KnownColor))) { Color color = Color.FromKnownColor(kc); if (color.IsSystemColor) continue; colors.Add(new ColorInfo { Name = color.Name, HexCode = $"#{color.R:X2}{color.G:X2}{color.B:X2}", ColorObject = color }); } return View(colors); } } public class ColorInfo { public string Name { get; set; } public string HexCode { get; set; } public Color ColorObject { get; set; } } @* Views/Colors/Index.cshtml *@ @model List<ColorInfo> <h2>系统预定义颜色</h2> @foreach (var item in Model) { <div style="background-color:@item.HexCode; color:black; border:1px solid #000; width:200px; height:30px; margin:5px; padding:5px; display:inline-block;"> @item.Name (@item.HexCode) </div> }

关键说明:

  1. 颜色来源:使用 System.Drawing.KnownColor 枚举获取所有预定义颜色
  2. 过滤系统颜色:通过 color.IsSystemColor 排除动态系统颜色(如菜单高亮)
  3. 颜色格式:RGB 值转换为十六进制格式(如 #FF0000 代表红色)
  4. 显示效果:每个颜色块显示颜色名称和 HEX 值

输出效果示例:

注意事项:

  1. 项目引用:需要添加 System.Drawing 程序集引用
  2. 安全性:ASP.NET Core 中建议使用 System.Drawing.Common NuGet 包
  3. 颜色数量:通常显示 140+ 种命名颜色(不包括系统动态颜色)
  4. 深色适配:示例中文字固定为黑色,实际应用可根据亮度调整文字颜色

通过以上方法,您可以在 ASP.NET 应用中完整展示所有系统预定义的颜色及其十六进制值。

如何获取所有颜色值?.NET颜色集合与ASP.NET示例代码实现 第3张

0