在C#开发中,设置控件背景色为数值65535对应的颜色是常见需求,65535对应的RGB值为(255,255,0),也就是纯黄色,下面介绍不同场景下的实现方式。

WinForms场景下的实现方法
方法一:使用ColorTranslator类转换
ColorTranslator类提供了将数值转换为Color对象的方法,适合直接处理整数类型的颜色数值。
using System;
using System.Drawing;
using System.Windows.Forms;
namespace ColorDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 将65535转换为对应的颜色,设置为窗体背景色
this.BackColor = ColorTranslator.FromWin32(65535);
}
}
}
方法二:直接构造RGB值
因为已知65535对应RGB(255,255,0),也可以直接通过Color.FromArgb方法构造颜色对象。
using System;
using System.Drawing;
using System.Windows.Forms;
namespace ColorDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 直接构造RGB为255,255,0的颜色,对应数值65535
this.BackColor = Color.FromArgb(255, 255, 0);
}
}
}
WPF场景下的实现方法
WPF中颜色设置使用System.Windows.Media命名空间下的Color结构,同样可以对应到65535的颜色值。
using System;
using System.Windows;
using System.Windows.Media;
namespace WpfColorDemo
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// 构造RGB为255,255,0的SolidColorBrush,设置为窗体背景
this.Background = new SolidColorBrush(Color.FromRgb(255, 255, 0));
}
}
}
数值与颜色的对应原理
Windows系统中常用的颜色数值是BGR格式的32位整数,不过65535是16位颜色值,对应BGR各8位的话,转换为十进制就是(255 << 8) + 255 = 65535,也就是蓝色分量为0,红色和绿色分量为255,最终呈现为黄色。如果需要处理其他颜色数值,也可以通过同样的逻辑推导对应的RGB分量,再使用对应的方法构造颜色对象。
注意事项
- 使用ColorTranslator.FromWin32方法时,传入的数值需要符合Windows颜色数值的规范,避免传入超出范围的数值导致异常。
- WPF和WinForms使用的颜色命名空间不同,不要混用System.Drawing和System.Windows.Media下的颜色类。
- 如果需要频繁使用固定的颜色值,可以将对应的Color对象定义为静态常量,提升代码复用性。