MigraDoc - 如何使用十六进制设置单元格颜色

5

我在数据库中有一个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 开头,而不是 #。我尝试使用 #,但失败了...至少我已经渲染出来了...只是我的颜色不对。

我认为你的代码是正确的,所以你做出的某些假设可能是错误的。 - NetMage
1
我认为这个问题是切题的,并且提供了足够的信息 - 至少对于那些熟悉MigraDoc的人来说是如此。一些毫无意义的问题从未被关闭(我的关闭投票已过期)。 - I liked the old Stack Overflow
你的问题激发了我改进Color.Parse方法(请参见我的回答)。感谢你的提问。 - I liked the old Stack Overflow
1个回答

8

将"#"替换为"0xff"以获取所需内容。

对于您的短数字(仅三个组件),Alpha通道始终为0,颜色完全透明。使用0xff后跟六个十六进制数字的RGB颜色,您将获得具有完全不透明度的颜色。

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


2
太棒了 - 非常感谢!完美地解决了问题...!不确定为什么这被认为是“离题”? - CJH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接