gpt4 book ai didi

c# - 设置饼图切片和图例的颜色

转载 作者:行者123 更新时间:2023-11-30 20:37:39 25 4
gpt4 key购买 nike

有人知道如何在 C# 中设置 PowerPoint 2010 饼图的切片/图例颜色吗?我无法使从 MSDN 站点读取的任何内容正常工作。我想不出获取正确对象和属性的正确方法。

编辑:好吧,我考虑过添加代码,但我所拥有的代码不起作用,所以我不确定它会有多大帮助或提供多少信息。我不知道要使用哪个对象/方法/属性来访问饼图切片颜色。我已经尝试过 Point、LegendKey、LegendEntry、Legend 和相关的方法/属性。我已经尝试了很多甚至不再出现在我的代码中的东西。

但是,就其值(value)而言,这就是我现在的代码:

 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);

最佳答案

Interior.ColorIndex 将不起作用,因为枚举中只有两个值:xlColorIndexAutomaticxlColorIndexNone

然而,你非常接近。你想要的是 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;
}
}
}

原来的饼图是这样的:

enter image description here

虽然新图表是这样的:

enter image description here

正如我所提到的,设置颜色的方法有很多种,我向您展示了十六进制方法。如果您引用 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;

enter image description here

图例条目会相应地改变它们的颜色,所以如果您使用这种方法,您甚至不必担心在那里设置颜色。

如您所知,Interop 可能会很痛苦。希望这能为您解决一些问题。

关于c# - 设置饼图切片和图例的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35851592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com