在Windows窗体中将int转换为Color

问题描述

|| 我行中的值等于-16777056,但是如何将其强制转换为Color? 像这样:
Color = (Color) Convert.ToInt32(((DaTarowView)this.dataGridView1.Rows[e.RowIndex].DataBoundItem)[\"Color\"]) })
    

解决方法

        尝试以下方法:
var argb = Convert.ToInt32(
    ((DataRowView)this.dataGridView1.Rows[e.RowIndex].DataBoundItem)[\"Color\"]);
Color = Color.FromArgb(argb);
    ,        颜色和数字之间的转换称为颜色字素联觉,患有这种情况的人可以识别数字的颜色(甚至形状或“感觉”)。不过,这里有一个棘手的问题是,这从未在计算机中被识别(仅在人中)。此外,这种情况通常是由于人们的遗传学所致,但是在使用迷幻药物后已有报道。虽然我永远不建议使用非法药物,但我想让您的CPU滑一下LSD可能值得一试。 另一个困难是,合成麻醉剂之间没有共同点-也就是说,数字6对我和您来说不是相同的颜色。因此,这些在您的计算机上的渲染可能与在我的计算机上的渲染不同。 (有点像“哇,男人,我怎么能知道颜色“蓝色”对我来说看起来不像我认为“红色”对你有用?\”但是再次,我们又回到了非法毒品方面。) 这就是我尝试将数字转换为颜色的方式。也就是说,除非您的数字实际代表有用的东西,例如ARGB颜色值。在这种情况下,您可以使用:
Color.FromArgb(numericValue);
    ,        好吧,您知道颜色是如何首先变成该整数的吗?我的猜测是,它是由串联字节组成的ARGB值。 如果是这样,这是最简单的方法:
var myColor = Color.FromArgb(myColorInt);
它将被集成到您的实际代码行中,例如:
var myColor = Color.FromArgb(Convert.ToInt32(((DataRowView)this.dataGridView1.Rows[e.RowIndex].DataBoundItem)[\"Color\"]) }));
    ,        
Color myColor = Color.FromArgb(Convert.ToInt32(((DataRowView)  
    this.dataGridView1.Rows[e.RowIndex].DataBoundItem)[\"Color\"])});
编辑:阅读以上评论之一后,您也许可以简化所有内容。尝试像这样分配选定的颜色:
((DataRowView)this.dataGridView1.Rows[e.RowIndex].DataBoundItem)[\"Color\"] = 
    colorDialog.Color;
然后像这样读出来:
Color myColor = 
    ((DataRowView)this.dataGridView1.Rows[e.RowIndex].DataBoundItem)[\"Color\"];
这样,您将其另存为
Color
,并将其另存为
Color
,并跳过了中间转换步骤。 这可能会或可能不会与其他修改一起使用,这取决于您的数据源是否将存储“ 8”而不是当前定义的“ 11”。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...