【问题标题】:Set color through color code in c#在c#中通过颜色代码设置颜色
【发布时间】:2014-01-28 00:50:21
【问题描述】:

我正在尝试在 c# 代码中添加颜色,例如以下颜色代码。

ListTreeView.Background = new SolidColorBrush(Colors.White);

这是工作..但我想将此颜色添加为颜色代码,所以我添加为

System.Windows.Media

谁能给我一个例子

系统.绘图

那么我可以做到以下几点:

ListTreeView.Background = ColorTranslator.FromHtml("#FFE7EFF2");

这给了我错误;有什么想法吗?

【问题讨论】:

  • 这是 WinForms 还是 WPF?
  • 那个代码对吗?正如@ho1 所说,ColorTranslator.FromHtml("#E7EFF2") 将适用于 RGB 十六进制值 - 但您有一个 8 位字符串。你那里也有 alpha 值吗?
  • 这完全是 WPF,但仍然无法正常工作。查看整个代码.. tlvi.Background = System.Drawing.ColorTranslator.FromHtml("#FFE7EFF2");

标签: c# system.drawing


【解决方案1】:

没有一种简单的方法可以通过这种方式从十六进制字符串中获取包含 alpha 的颜色。

我认为您的答案取决于您从哪里获得颜色和 alpha 值。

单独的 RGB 颜色可以从 HTML 十六进制字符串中解析出来:

Color colour = ColorTranslator.FromHtml("#E7EFF2");

如果您有单独的 alpha 值,则可以应用此值 (docs):

Color colour = ColorTranslator.FromHtml("#E7EFF2");
Color transparent = Color.FromArgb(128, colour);

或者,您可能需要解析字符串并将其拆分以将十六进制对转换为整数值。

请原谅英文拼写,但颜色中绝对应该有一个'u' :)

【讨论】:

  • 盔甲/盔甲、防御/防御、灰色/灰色等也是如此。重点是。但我想知道,因为 wpf 有自己的“fromArgb”功能,但它不知何故没有使用正确的 alpha 设置?为什么
  • @ThrowingDwarf .Net 的Color 组件不是很好。缺少许多基本功能和错误,例如 GetBrightness() 返回亮度/亮度(0 是黑色,1 是白色)而不是亮度(0 仍然是黑色,但 1 是全强度颜色)stackoverflow.com/questions/24732836
  • 是的,但例如,如果我从颜色选择器 (#FFFBB510) 生成十六进制,它的金黄色 (rgb 251,181,16) 全 alpha。像 hexcolortool.com 这样的颜色转换器甚至不接受作为有效颜色。并且据我所知,wpf 也不接受这个十六进制。我最终使用了“newBtn.Background = new SolidColorBrush(Color.FromArgb(255,251,181,16));"
  • 如果他们能添加使用 CSS 样式表的能力 smh
【解决方案2】:

ListTreeView 不是框架提供的标准Control,因此您必须查阅他们的文档。不过,一般来说,您可以使用 System.Drawing.ColorTranslator.FromHtmlSystem.Drawing.Color.FromArgb。下面是使用 TreeView 的方法:

TreeView t = ...
t.BackgroundColor = Color.FromArgb(0xff00ff00); // Fully opaque, 100% green.
// or:
t.BackgroundColor = ColorTranslator.FromHtml("green");

【讨论】:

  • 我认为没有采用十六进制字符串的FromArgb 重载吗?
  • 呃,对不起,这应该只是一个十六进制整数。我的错。
【解决方案3】:

我认为你可以使用System.Drawing.ColorTranslator.FromHtml

【讨论】:

  • 如果您想要 (A)RGB 值,这不是正确的方法,这显然是他所追求的。 FromHtml 如果你使用 HTML 颜色以外的任何东西,将会抛出异常。
  • @John:对不起,不知道你在说什么。 Color c = System.Drawing.ColorTranslator.FromHtml("#FFE7EFF2") 工作正常,如果我再做button1.BackColor = c; 它会使按钮变成蓝色。你是说颜色不对?
  • @ho1:当我在 ColorTranslator 中使用“#FFE7EFF2”时,它的颜色与“#00E7EFF2”完全相同(因为 Alpha 通道为零,所以应该是不可见的,对吧?)。
  • @John:不知道,我对图形和颜色不太了解,只是被您关于异常的评论弄糊涂了。
  • 看到的事情是我正在尝试将背景颜色添加到 ListTreeView 所以 ListTreeView.Background =System.Drawing.ColorTranslator.FromHtml("#00E7EFF2");它会给出错误,所以我能做什么..
【解决方案4】:

使用Color.FromArgb method

顺便说一句,不应该是Treeview.BackColor吗?

Grz,克里斯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    相关资源
    最近更新 更多