【问题标题】:MigraDoc - Setting Cell Colour from HexMigraDoc - 从十六进制设置单元格颜色
【发布时间】:2023-03-12 09:45:02
【问题描述】:

数据库中有一个HEX 颜色代码字符串("#ADD8E6"),我想用它来更改MigraDoc 单元格的背景颜色。我找到了Color.Parse() 函数,但它并没有改变我的单元格的颜色。我必须执行以下操作:

string colourHex = (database.HexCode).Replace("#", "0x");
var colourObject = MigraDoc.DocumentObjectModel.Color.Parse(colourHex);

Cell.Shading.Color = colourObject;

我知道Cell.Shading.Color 是正确的,因为如果我应用Cell.Shading.Color = Colors.AliceBlue,那么单元格会按预期改变颜色。我了解Color.Parse 需要HEX 代码以0x 而不是# 开头。我尝试使用#,但它失败了......至少我所得到的是渲染......只是不是我的颜色。

【问题讨论】:

  • 我认为你的代码是正确的,所以你假设的东西一定是错的。
  • 我认为这个问题很切题并且提供了足够的信息——至少对于那些熟悉 MigraDoc 的人来说是这样。几个毫无意义的问题从未关闭(我的关闭投票已过期)。
  • 你的问题启发了我改进Color.Parse 方法(见我的回答)。感谢您提出问题。

标签: c# colors migradoc


【解决方案1】:

你必须用“0xff”替换“#”才能得到你想要的。

使用您的短数字(仅限三个分量),Alpha 通道将始终为 0,颜色将完全透明。使用0xff 后跟六个十六进制数字表示 RGB 颜色,您将获得完全不透明的颜色。

更新:在当前版本的 MigraDoc 1.50(beta 5b 或更高版本)中,您还可以使用哈希符号后跟 3、6 或 8 个十六进制数字。 8 位数字包括 Alpha 通道,3 位或 6 位数字使用 FF 的 Alpha 设置。
使用新版本,代码#ADD8E6将达到预期效果。
使用 0x 前缀时没有任何变化。

【讨论】:

  • 太棒了——非常感谢!完美地工作......!不知道为什么这被认为是“离题”??
猜你喜欢
  • 1970-01-01
  • 2020-03-05
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
  • 2022-01-19
  • 2015-06-23
  • 1970-01-01
相关资源
最近更新 更多