0

我正在寻找在 C# 中为 datagridview 创建一个基于单元格的着色系统。

每个单元格将有一个从-1 到 1 的值。在 0 时,我希望背景色为白色,在 -1 时,我希望它为红色,在 1 时,我希望它为绿色。

在这两者之间,我想让它在颜色之间褪色。例如,0.9 将是绿色,但不是完全绿色,它会向白色半褪色。在 -.1 时,它主要是白色的,但有轻微的红色。

谢谢!

private void DGV_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
//Code to generage pctMove, Lets say its .5 for simplicity...  
double pctMove = .5;                      
e.CellStyle.BackColor = Color.FromArgb(pctMove, Color.Green);     
}

这似乎对我不起作用,因为结果是灰色,然后当我单击单元格时,它变成蓝色,这对我来说我不知道​​为什么。

4

1 回答 1

0

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.backcolor%28v=vs.110%29.aspx

“BackColor 属性不支持透明颜色,除非 System.Windows.Forms.ControlStyles 的 SupportsTransparentBackColor 值设置为 true。”

搞砸 ControlStyles 听起来像是破坏东西的快速方法,所以让我们以愚蠢的方式来做吧。

if(colorVal > 0)
{
    var whiteness = 255 - Convert.ToInt32(colorval * 255);
    myCell.BackColor = Color.FromArgb(whiteness, 255, whiteness); //green
}
else
{
    var whiteness = 255 - Convert.ToInt32(colorval * -255);
    myCell.BackColor = Color.FromArgb(255, whiteness, whiteness); //red
}
于 2013-11-06T17:56:17.710 回答