【问题标题】:Removing transparency from color从颜色中去除透明度
【发布时间】:2014-09-08 12:57:16
【问题描述】:

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

知道如何从颜色中取出透明度吗?

我想做的就是让文本框的背景变成那种颜色。

【问题讨论】:

    标签: c# colors background textbox


    【解决方案1】:

    控件不支持半透明颜色,你的十六进制字符串开头有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);
    

    【讨论】:

    • 我可以从字符串中删除 16 吗?如果是这样,我可以每次从字符串中删除第二个和第三个字符。
    • 是的,如果超过 6 个字符,您可以删除前 2 个字符。另外,修复了只读问题。忘记了 System.Drawing 颜色与 XNA 颜色相比是如何工作的。
    • 还有一个问题,我如何保持颜色有些相似。
    • 颜色关闭,例如蓝色是紫色
    猜你喜欢
    • 2013-04-14
    • 1970-01-01
    • 2021-07-26
    • 2012-07-11
    • 2011-10-06
    • 2016-04-24
    • 2019-04-05
    • 1970-01-01
    • 2014-03-22
    相关资源
    最近更新 更多