gpt4 book ai didi

c# - .ToARGB() 返回值的范围

转载 作者:太空宇宙 更新时间:2023-11-03 19:35:58 24 4
gpt4 key购买 nike

我希望能够在我的应用程序中的数据库中存储面板的背景颜色。

该值可以是具体的颜色,也可以是空的,表示它是从父级继承的。

我想通过调用 System.Drawing.Color.ToArgb() 方法将其存储在不可为 null 的 int 字段中。

这个方法的返回值好像白色是-1,黑色是-16777216...

所以我在想,为了表示没有选择颜色,我可以存储一个正整数。这将提供一种非常简单的方法来检查是否已存储显式颜色或未存储任何颜色。

现在我想知道是否存在 System.Drawing.Color.ToArgb() 可以返回正值的合法原因。 (此函数的可能返回值范围是多少)。

我没有篡改 alpha channel ,所以我不知道这是否会产生影响......

如果我不能存储一个正整数来指示明确颜色的缺失,我想我只需要使该字段可为空....

最佳答案

好吧,你得到一个包含 Alpha、红色、绿色和蓝色的 32 位整数,每个都填充 8 位。

alpha 值位于最高 8 位,因此对于每种非透明颜色,您都在 0xFF 处拥有这些值(如果该整数是有符号整数,它会自动使该整数为负数)。

因此,如果您的 alpha 值低于 128 (0x80),您将获得正颜色值。

该函数的可能返回值范围确实是 0x000000000xFFFFFFFF,换句话说:每个可能的 32 位整数。对于有符号整数,这是 -2147483648 到 +2147483647。

在你的情况下,我肯定会允许 NULL 值,因为这实际上是你在这里想要的。不过,如果你完全放弃 alpha 值,你还有另外 8 位信息。因此您可以然后实现它检查负值/非负值。

关于c# - .ToARGB() 返回值的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1599890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com