C# .ToARGB()返回值的范围

C# .ToARGB()返回值的范围,c#,.net,C#,.net,我希望能够在数据库中存储应用程序中面板的背景色 该值可以是具体的颜色,也可以是空的,表示它是从父级继承的 我想通过调用System.Drawing.Color.ToArgb()方法将其存储在不可为null的int字段中 此方法的返回值对于白色为-1,对于黑色为-16777216 所以我想,为了表示没有选择颜色,我可以存储一个正整数。这将提供一种非常简单的方法来检查是否已存储显式颜色或未存储任何颜色 现在我想知道System.Drawing.Color.ToArgb()是否有合法的原因可以返回正值

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

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

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

此方法的返回值对于白色为-1,对于黑色为-16777216

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

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

我还没有篡改阿尔法频道,所以我不知道这是否会有影响


如果我不能存储一个正整数来指示显式颜色的消失,我想我只需要将字段设置为可空….

那么,您将得到一个32位整数,其中包含Alpha、红色、绿色和蓝色,每个填充8位

alpha值的最高顺序为8位,因此对于每种不透明颜色,都有
0xFF
(如果是有符号整数,则会自动使该整数为负)

因此,如果您的alpha值降至128以下(
0x80
),您将获得正的颜色值

该函数的可能返回值范围实际上是
0x00000000
0xffffff
,换句话说:每个可能的32位整数。对于有符号整数,这是−2147483648至+2147483647


在你的情况下,我肯定会允许空值,因为这实际上是你想要的。但是,如果您将alpha值全部删除,那么您还有8位信息。因此,您可以执行它来检查负值/非负值。

那么,您将得到一个32位整数,其中包含Alpha、红色、绿色和蓝色,每个值填充8位

alpha值的最高顺序为8位,因此对于每种不透明颜色,都有
0xFF
(如果是有符号整数,则会自动使该整数为负)

因此,如果您的alpha值降至128以下(
0x80
),您将获得正的颜色值

该函数的可能返回值范围实际上是
0x00000000
0xffffff
,换句话说:每个可能的32位整数。对于有符号整数,这是−2147483648至+2147483647

在你的情况下,我肯定会允许空值,因为这实际上是你想要的。但是,如果您将alpha值全部删除,那么您还有8位信息。因此,您可以执行它来检查负值/非负值。

引用

32位ARGB的字节顺序 值为AARGGBB。最 有效字节(MSB),表示为 AA是α分量值。这个 第二、第三和第四字节, 由RR、GG和BB代表, 分别是颜色分量 分别为红色、绿色和蓝色

它是一个32位字段。前8位用于alpha通道。当MSB为1时,它将始终返回负值。 当它变为0时,可以得到正值。我希望您知道值是如何存储的,以及符号位是如何影响它的

当AA从11111B下降到0xxxxxxxb时,则期望得到正值

IMHO可为空字段是一种方法。

引用

32位ARGB的字节顺序 值为AARGGBB。最 有效字节(MSB),表示为 AA是α分量值。这个 第二、第三和第四字节, 由RR、GG和BB代表, 分别是颜色分量 分别为红色、绿色和蓝色

它是一个32位字段。前8位用于alpha通道。当MSB为1时,它将始终返回负值。 当它变为0时,可以得到正值。我希望您知道值是如何存储的,以及符号位是如何影响它的

当AA从11111B下降到0xxxxxxxb时,则期望得到正值

IMHO可为空字段是一种方法