从颜色中删除透明度

时间:2014-07-17 15:04:59

标签: c# colors background textbox

目前我正在使用此代码将我的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.

关于如何从颜色中获取透明度的任何想法?

我想要它做的就是使文本框的背景变色。

1 个答案:

答案 0 :(得分:4)

控件不支持半透明颜色,并且您的十六进制字符串在开头有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个字符),您也可以简单地删除字符串中的字母

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