去除颜色的透明度

本文关键字:透明度 颜色 | 更新日期: 2023-09-27 18:13:25

目前我正在使用此代码将我的RGB字符串转换为一种颜色,以设置为文本框的背景

 ColorConverter colorConverter = new ColorConverter();
 colorTextBox1.BackColor = (Color)colorConverter.ConvertFromString(displayColor);

但是当我运行这段代码时,我得到了这个错误。当displayColor = "#16776960" .

An unhandled exception of type 'System.ArgumentException' occurred in System.Windows.Forms.dll
Additional information: Control does not support transparent background colors.

有什么想法,我可以从颜色中取出透明度吗?

我要做的就是让文本框的背景颜色为。

去除颜色的透明度

控件不支持半透明颜色,并且十六进制字符串的开头有16,这是alpha组件。要将颜色应用到控件上,您需要将alpha去掉。

ColorConverter colorConverter = new ColorConverter();
Color color = (Color)colorConverter.ConvertFromString(displayColor);
color = Color.FromARGB(255, color.R, color.G, color.B);
colorTextBox1.BackColor = color;

如果字符串长度超过7个字符(6个颜色字符和1个#),你也可以简单地从字符串中删除alpha

string hex = "#16776960";
if (hex.Length > 7)
   hex = hex.Remove(1,2);