1. 程式人生 > >C# 在PPT幻燈片中繪製圖形

C# 在PPT幻燈片中繪製圖形

概述

本篇文章將介紹C#在PPT幻燈片中操作形狀(shape)的方法。這裡主要涉及常規形狀,如帶箭頭的線條,矩形、圓形、三角形、多邊形、不規則形狀等。下面的示例中,可以通過繪製形狀,並設定相應格式等。示例包含以下要點:

  • 繪製形狀
  • 用圖片填充形狀
  • 在形狀中新增文字
  • 設定形狀單色、漸變色填充
  • 設定形狀陰影效果、光邊效果
  • 組合多個形狀為一個
  • 將形狀儲存為圖片

 

工具

下載安裝後,注意在程式中新增引用Spire.Presentation.dll到程式,dll檔案可在安裝路徑下的Bin資料夾中獲取。


示例程式碼(供參考)

【示例1】繪製形狀

 

using Spire.Presentation;
using Spire.Presentation.Drawing;
using System.Collections;
using System.Drawing;

namespace DrawShape_PPT
{
    class Program
    {
        static void Main(string[] args)
        {
            //新建一個幻燈片文件,並指定幻燈片大小
            Presentation ppt = new Presentation();
            ppt.SlideSize.Type = SlideSizeType.Screen16x9;

            //獲取第一張幻燈片
            ISlide slide = ppt.Slides[0];

            //新增一個雲朵形狀,並填充漸變顏色
            IAutoShape shape1 = slide.Shapes.AppendShape(ShapeType.CalloutCloud, new RectangleF(160, 50, 200, 80));
            shape1.Fill.FillType = FillFormatType.Gradient;
            shape1.Fill.Gradient.GradientStops.Append(0, Color.Blue);
            shape1.Fill.Gradient.GradientStops.Append(1, Color.Azure);
            shape1.Line.FillType = FillFormatType.None;

            //在形狀中繪製文字,並設定字型、字號、字型顏色等
            shape1.AppendTextFrame("HOW??");
            TextRange textRange = (shape1 as IAutoShape).TextFrame.TextRange;
            textRange.FontHeight = 13;
            textRange.LatinFont = new TextFont("Arial");
            textRange.Fill.FillType = FillFormatType.Solid;
            textRange.Fill.SolidColor.Color = Color.White;

            //新增一個橢圓,並用圖片填充形狀
            IAutoShape shape2 = slide.Shapes.AppendShape(ShapeType.Ellipse, new RectangleF(50, 130, 150, 250));
            string picPath = "sk.png"; 
            shape2.Fill.FillType = FillFormatType.Picture;
            shape2.Fill.PictureFill.Picture.Url = picPath;
            shape2.Fill.PictureFill.FillType = PictureFillType.Stretch;
            shape2.Line.FillType = FillFormatType.None;

            //新增一個三角形,填充顏色並設定形狀邊框樣式
            IAutoShape shape3 = slide.Shapes.AppendShape(ShapeType.Triangle, new RectangleF(480, 180, 100, 130));
            shape3.Fill.FillType = FillFormatType.Solid;
            shape3.Fill.SolidColor.Color = Color.Wheat;
            shape3.Line.Width = 3;
            shape3.Line.DashStyle = LineDashStyleType.Dash;
            shape3.ShapeStyle.LineColor.Color = Color.Red;

            //設定形狀陰影效果
            PresetShadow presetShadow = new PresetShadow();
            presetShadow.Preset = PresetShadowValue.BackRightPerspective;
            presetShadow.ColorFormat.Color = Color.LightGray;
            shape3.EffectDag.PresetShadowEffect = presetShadow;
         
            //新增一個帶箭頭的直線
            IAutoShape shape4 = slide.Shapes.AppendShape(ShapeType.Line, new RectangleF(660, 200, 100, 100));
            shape4.ShapeStyle.LineColor.Color = Color.Red;
            shape4.Line.LineEndType = LineEndType.StealthArrow;
            shape4.Rotation = -90;//設定形狀旋轉角度

            //新增一個圓形
            IAutoShape shape5 = slide.Shapes.AppendShape(ShapeType.Ellipse, new RectangleF(289, 166, 120, 120));
            shape5.Fill.FillType = FillFormatType.Solid;
            shape5.Fill.SolidColor.Color = Color.White;
            shape5.Line.FillType = FillFormatType.Solid;
            shape5.Line.SolidFillColor.Color = Color.Red;

            //新增一個五角星形狀
            IAutoShape shape6 = slide.Shapes.AppendShape(ShapeType.FivePointedStar, new RectangleF(300, 170, 100, 100));
            shape6.Fill.FillType = FillFormatType.Solid;
            shape6.Fill.SolidColor.Color = Color.Orange;
            shape6.Line.FillType = FillFormatType.None;
            //設定五角星形狀的光邊效果
            GlowEffect glow = new GlowEffect();
            glow.ColorFormat.Color = Color.Yellow;
            glow.Radius = 7.0;
            shape6.EffectDag.GlowEffect = glow;
            
            //將shape5和shape6兩個形狀組合
            ArrayList list = new ArrayList();
            list.Add(shape5);
            list.Add(shape6);
            ppt.Slides[0].GroupShapes(list);

            //儲存文件
            ppt.SaveToFile("result.pptx", FileFormat.Pptx2010);
            System.Diagnostics.Process.Start("result.pptx");
        }
    }
}

 
形狀新增效果:

 



 

【示例2】將形狀儲存為圖片

using Spire.Presentation;
using System;
using System.Drawing;

namespace SaveShapesAsImgs_PPT
{
    class Program
    {
        static void Main(string[] args)
        {
            //例項化Presentation類的物件,並載入測試文件
            Presentation ppt = new Presentation();
            ppt.LoadFromFile("test.pptx");

            //遍歷第一張幻燈片中的所有圖形
            for (int i = 0; i < ppt.Slides[0].Shapes.Count; i++)
            {
                //獲取幻燈片中的圖形,並儲存為.png格式的圖片
                Image image = ppt.Slides[0].Shapes.SaveAsImage(i);
                image.Save(String.Format("Picture-{0}.png", i), System.Drawing.Imaging.ImageFormat.Png);
            }

        }
    }
}

 



 

 

(本文完)

 

轉載請註明出處。