如何将System.Drawing.Color分配给Microsoft.Office.Interop.Excel.ColorFormat

时间:2014-12-17 03:52:37

标签: c# excel colors system.drawing

示例代码如下,

Chart.SerialsCollection(1).Point(1).Format.Fill.ForeColor = System.Drawing.Color.Red;

返回错误。不能隐式转换类型,一个是Struct,另一个是ColorFormat。

ForeColor.RGB是 Int 类型,我只能从Color.Red.R,Color.Red.G和Color.Red.B获得3个整数。如何将我想要的颜色分配给ForeColor属性?

2 个答案:

答案 0 :(得分:0)

根据评论中的建议,使用ColorTranslator.ToOle

Chart.SerialsCollection(1).Point(1).Format.Fill.ForeColor.RGB = ColorTranslator.ToOle(Color.Red);

或者,输入RGB值:

Chart.SerialsCollection(1).Point(1).Format.Fill.ForeColor.RGB = ColorTranslator.ToOle(Color.FromArgb(255, 0, 0);

一些其他信息,所以我不只是重复评论:

ForeColor.RGB可以用十六进制表示为0xBBGGRRsource)。知道了,你可以创建以下功能:

public int Color_to_RGB(Color color) {
    return (color.B << 16) | (color.G << 8) | Color.R;
}

使用:

Chart.SerialCollection(1).Point(1).Format.Fill.ForeColor.RGB = Color_to_RGB(Color.Red);

另一个答案中使用的原因ToArgb()不起作用,因为其十六进制表示为0xAARRGGBB

答案 1 :(得分:-1)

尝试RGB属性ForeColor.RGB

E.g。

Chart.SerialsCollection(1).Point(1).Format.Fill.ForeColor.RGB = System.Drawing.Color.Red.ToArgb();