设置饼图切片和图例的颜色
Setting color of pie chart slices and legend
有人知道如何在 C# 中设置 PowerPoint 2010 饼图 slice/legend 的颜色吗?我无法使从 MSDN 站点读取的任何内容正常工作。我想不出正确的方法来获取正确的对象和 属性.
编辑:
好吧,我考虑过添加代码,但我所拥有的代码不起作用,所以我不确定它会有多大帮助或提供多少信息。我不知道要使用哪个 object/method/property 来访问饼图切片颜色。我已经尝试了 Point、LegendKey、LegendEntry、Legend,并与每个相关联 methods/properties。我已经尝试了很多甚至不再出现在我的代码中的东西。
但是,就其价值而言,这就是我现在的代码:
PowerPoint.Series series = (PowerPoint.Series)xlChart.SeriesCollection(1);
PowerPoint.Point point = (PowerPoint.Point)series.Points(xlCol);
point.Interior.ColorIndex = Convert.ToInt32(dataArray[2, i]);
PowerPoint.Legend legend = (PowerPoint.Legend)xlChart.Legend;
PowerPoint.LegendEntry lentry = (PowerPoint.LegendEntry)legend.LegendEntries(1);
如果您正确引用 Microsoft.Office.Interop.PowerPoint
对象库 (https://msdn.microsoft.com/en-us/library/microsoft.office.interop.powerpoint.aspx),可以按照以下 C# 代码示例所示更改饼图点颜色:
xlChart.Series[0].Points[0].Color = Color.Red;
xlChart.Series[0].Points[1].Color = Color.Blue;
希望这会有所帮助。
Interior.ColorIndex
不会起作用,因为枚举中只有两个值:xlColorIndexAutomatic
和 xlColorIndexNone
.
然而,你非常接近。你要的是Interior.Color
。我使用十六进制来设置颜色,但我相信还有其他方法。下面的示例基于这样的假设:第一张幻灯片上有一个包含饼图的现有 PowerPoint 文件,没有其他内容。显然,您会根据自己的情况进行调整。
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
namespace SampleApp
{
class Program
{
static void Main(string[] args)
{
var filePath = @"C:\users\userx\desktop\test.pptx";
var app = new PowerPoint.Application();
var presentation = app.Presentations.Open(filePath);
var slide = presentation.Slides[1];
var chart = slide.Shapes[1].Chart;
var series = chart.SeriesCollection(1) as PowerPoint.Series;
var point = series.Points(1) as PowerPoint.Point;
point.Interior.Color = 0x41BA5D;
point = series.Points(2) as PowerPoint.Point;
point.Interior.Color = 0xA841BA;
point = series.Points(3) as PowerPoint.Point;
point.Interior.Color = 0xBA4141;
point = series.Points(4) as PowerPoint.Point;
point.Interior.Color = 0x7AB4FF;
}
}
}
原来的饼图是这样的:
虽然新图表是这样的:
正如我所提到的,设置颜色的方法有很多种,我向您展示了十六进制方法。如果您引用 System.Drawing
程序集,那么您将可以访问 Color
,这大大简化了事情:
var point = series.Points(1) as PowerPoint.Point;
point.Interior.Color = Color.Red;
point = series.Points(2) as PowerPoint.Point;
point.Interior.Color = Color.Pink;
point = series.Points(3) as PowerPoint.Point;
point.Interior.Color = Color.Black;
point = series.Points(4) as PowerPoint.Point;
point.Interior.Color = Color.Green;
图例条目会相应地改变它们的颜色,所以如果您使用这种方法,您甚至不必担心在那里设置颜色。
如您所知,Interop 可能会很痛苦。希望这能为您解决一些问题。
有人知道如何在 C# 中设置 PowerPoint 2010 饼图 slice/legend 的颜色吗?我无法使从 MSDN 站点读取的任何内容正常工作。我想不出正确的方法来获取正确的对象和 属性.
编辑: 好吧,我考虑过添加代码,但我所拥有的代码不起作用,所以我不确定它会有多大帮助或提供多少信息。我不知道要使用哪个 object/method/property 来访问饼图切片颜色。我已经尝试了 Point、LegendKey、LegendEntry、Legend,并与每个相关联 methods/properties。我已经尝试了很多甚至不再出现在我的代码中的东西。
但是,就其价值而言,这就是我现在的代码:
PowerPoint.Series series = (PowerPoint.Series)xlChart.SeriesCollection(1);
PowerPoint.Point point = (PowerPoint.Point)series.Points(xlCol);
point.Interior.ColorIndex = Convert.ToInt32(dataArray[2, i]);
PowerPoint.Legend legend = (PowerPoint.Legend)xlChart.Legend;
PowerPoint.LegendEntry lentry = (PowerPoint.LegendEntry)legend.LegendEntries(1);
如果您正确引用 Microsoft.Office.Interop.PowerPoint
对象库 (https://msdn.microsoft.com/en-us/library/microsoft.office.interop.powerpoint.aspx),可以按照以下 C# 代码示例所示更改饼图点颜色:
xlChart.Series[0].Points[0].Color = Color.Red;
xlChart.Series[0].Points[1].Color = Color.Blue;
希望这会有所帮助。
Interior.ColorIndex
不会起作用,因为枚举中只有两个值:xlColorIndexAutomatic
和 xlColorIndexNone
.
然而,你非常接近。你要的是Interior.Color
。我使用十六进制来设置颜色,但我相信还有其他方法。下面的示例基于这样的假设:第一张幻灯片上有一个包含饼图的现有 PowerPoint 文件,没有其他内容。显然,您会根据自己的情况进行调整。
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
namespace SampleApp
{
class Program
{
static void Main(string[] args)
{
var filePath = @"C:\users\userx\desktop\test.pptx";
var app = new PowerPoint.Application();
var presentation = app.Presentations.Open(filePath);
var slide = presentation.Slides[1];
var chart = slide.Shapes[1].Chart;
var series = chart.SeriesCollection(1) as PowerPoint.Series;
var point = series.Points(1) as PowerPoint.Point;
point.Interior.Color = 0x41BA5D;
point = series.Points(2) as PowerPoint.Point;
point.Interior.Color = 0xA841BA;
point = series.Points(3) as PowerPoint.Point;
point.Interior.Color = 0xBA4141;
point = series.Points(4) as PowerPoint.Point;
point.Interior.Color = 0x7AB4FF;
}
}
}
原来的饼图是这样的:
虽然新图表是这样的:
正如我所提到的,设置颜色的方法有很多种,我向您展示了十六进制方法。如果您引用 System.Drawing
程序集,那么您将可以访问 Color
,这大大简化了事情:
var point = series.Points(1) as PowerPoint.Point;
point.Interior.Color = Color.Red;
point = series.Points(2) as PowerPoint.Point;
point.Interior.Color = Color.Pink;
point = series.Points(3) as PowerPoint.Point;
point.Interior.Color = Color.Black;
point = series.Points(4) as PowerPoint.Point;
point.Interior.Color = Color.Green;
图例条目会相应地改变它们的颜色,所以如果您使用这种方法,您甚至不必担心在那里设置颜色。
如您所知,Interop 可能会很痛苦。希望这能为您解决一些问题。