首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Drawing.Color转换FromArgb问题

System.Drawing.Color转换FromArgb问题
EN

Stack Overflow用户
提问于 2012-02-09 16:01:45
回答 4查看 4.9K关注 0票数 1

我把我的颜色保存在db和int值中。

代码语言:javascript
复制
int icolor = System.Drawing.Color.Red.ToArgb();
//result: -65536

当将整数转换为颜色时,会丢失属性Color.Name。必须返回"Red“,但属性返回"ff000000”。我在做什么wrang?

我需要获取这个一个属性Red,但不是十六进制值

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-09 16:08:01

尝尝这个

代码语言:javascript
复制
System.Drawing.ColorTranslator.FromHtml("#" + "Hex value").Name
票数 7
EN

Stack Overflow用户

发布于 2012-02-09 16:05:08

你没做错什么。

十六进制的ff等于255,这是System.Drawing.Color.Red.ToArgb();返回的Red颜色的十进制值

如果想要获取颜色的名称,请使用System.Drawing.Color.Red.Name

代码语言:javascript
复制
string sRedColorName = System.Drawing.Color.Red.Name;
票数 3
EN

Stack Overflow用户

发布于 2012-02-09 16:07:54

将整数转换为颜色时的

,而不是丢失的属性Color.Name。

是的,这是正确的。这就是Color.Name属性的工作方式。根据the documentation的说法

此方法返回用户定义的颜色名称(如果颜色是从名称创建的)或已知颜色的名称。对于自定义颜色,将返回RGB值。

因此,由于您是从整数(RGB)值(而不是其名称)创建Color对象,因此Color结构不会将其识别为命名颜色。

此信息不是在运行时通过迭代包含所有已知颜色及其RGB值的映射来动态确定的,而是在创建Color对象时存储在私有前哨字段中。在将颜色信息作为整数序列化到数据库的过程中,您会丢失该信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9207253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档