如何在ASPOSE幻灯片

时间:2017-06-22 09:46:36

标签: aspose aspose-slides

我们可以在ASPOSE中添加带有图表数据标签的任何形状/图像。我需要根据图表中每个数据标签的特定值显示一个不同颜色的箭头。我正在使用ASPOSE来生成我的ppt。或者有任何方法可以在ASPOSE中找到数据标签位置。enter image description here

2 个答案:

答案 0 :(得分:2)

我已经观察了您的要求并且喜欢分享MS PowerPoint支持LineWithMarker图表,该图表可以为不同的系列数据点显示不同的预定义或自定义标记符号(以图像的形式)。请尝试使用以下示例代码,以获取使用Aspose.Slides和MSO图表的可能选项。

public static void TestScatter()
{
    var location = System.Reflection.Assembly.GetExecutingAssembly().Location;

    //Open a presentation
    Presentation pres = new Presentation();
    IChart chart = pres.Slides[0].Shapes.AddChart(ChartType.StackedLineWithMarkers, 10, 10, 400, 400);
    //populating cycle
    var serie = chart.ChartData.Series[0];
    var wbk = chart.ChartData.ChartDataWorkbook;
    chart.ChartData.Series.RemoveAt(1);
    chart.ChartData.Series.RemoveAt(1);

    serie.Marker.Format.Fill.FillType = FillType.Picture;
    serie.Marker.Size = 20;

    // Set the picture
    System.Drawing.Image img = (System.Drawing.Image)new Bitmap(@"C:\Users\Public\Pictures\Sample Pictures\Tulips.jpg");
    IPPImage imgx = pres.Images.AddImage(img);
    serie.Marker.Format.Fill.PictureFillFormat.Picture.Image = imgx;

    //For individual data point
    serie.DataPoints[0].Marker.Format.Fill.FillType = FillType.Solid;
    serie.DataPoints[0].Marker.Format.Fill.SolidFillColor.Color = Color.Red;
    serie.DataPoints[0].Marker.Size = 20;
    serie.DataPoints[0].Marker.Symbol = MarkerStyleType.Triangle;

    serie.DataPoints[0].Label.DataLabelFormat.ShowValue = true;
    serie.DataPoints[1].Label.DataLabelFormat.ShowValue = true;
    serie.DataPoints[2].Label.DataLabelFormat.ShowValue = true;
    serie.DataPoints[3].Label.DataLabelFormat.ShowValue = true;

    pres.Save(Path.Combine(Path.GetDirectoryName(location), "Result2.pptx"), SaveFormat.Pptx);

}

我是Aspose的支持开发人员/传播者。

非常感谢,

答案 1 :(得分:1)

我进一步观察了您的要求,并观察到您也在Aspose.Slides official support forum中发布了类似的要求。请尝试使用以下示例代码来实现此目的。

public static void TestLineChart()
{
var location = System.Reflection.Assembly.GetExecutingAssembly().Location;

//Open a presentation
Presentation pres = new Presentation();
IChart chart = pres.Slides[0].Shapes.AddChart(ChartType.StackedLineWithMarkers, 10, 10, 400, 400);
//populating cycle
var serie = chart.ChartData.Series[0];
var wbk = chart.ChartData.ChartDataWorkbook;
chart.ChartData.Series.RemoveAt(1);
chart.ChartData.Series.RemoveAt(1);

serie.Marker.Format.Fill.FillType = FillType.Picture;
serie.Marker.Size = 20;


serie.Marker.Symbol = MarkerStyleType.Diamond;
serie.Marker.Format.Fill.FillType = FillType.Solid;
serie.Marker.Format.Fill.SolidFillColor.Color=Color.Orange;
serie.Marker.Format.Line.FillFormat.FillType = FillType.Solid;
serie.Marker.Format.Line.FillFormat.SolidFillColor.Color=Color.Red;
serie.Marker.Format.Line.Width=1.0F;

serie.Format.Line.Width = 3.0f;
serie.Format.Line.FillFormat.FillType=FillType.Solid;
serie.Format.Line.FillFormat.SolidFillColor.Color = Color.FromArgb(209,225,91) ;

for(int i=0;i<serie.DataPoints.Count;i++)
{
serie.DataPoints[i].Label.DataLabelFormat.ShowValue = true;
    IDataLabel label=serie.Labels[i];
    chart.ValidateChartLayout();
    IAutoShape ashp=chart.UserShapes.Shapes.AddAutoShape(ShapeType.Triangle,chart.X + label.ActualX + 5, chart.Y + label.ActualY + 5, 20,20);
    ashp.FillFormat.FillType = FillType.Solid;

    ashp.LineFormat.FillFormat.FillType = FillType.NoFill;
    if (i % 2 == 0)//even data points
    {
        ashp.FillFormat.SolidFillColor.Color = Color.Green;
    }
    else
    {
        ashp.Rotation = 180;
        ashp.FillFormat.SolidFillColor.Color = Color.Red;
    }
}

pres.Save(Path.Combine(Path.GetDirectoryName(location), "Result2.pptx"), Aspose.Slides.Export.SaveFormat.Pptx);

}

我是Aspose的支持开发人员/传播者。

非常感谢,