Microsoft.Office.Interop.PowerPoint.Application PPT = new Microsoft.Office.Interop.PowerPoint.Application();//創建PPT應用
Microsoft.Office.Interop.PowerPoint.Presentation MyPres = null;//PPT應用的實例
Microsoft.Office.Interop.PowerPoint.Slide MySlide = null;//PPT中的幻燈片
MyPres = PPT.Presentations.Open("文件路徑", MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoTrue);//此處將一個PPT實例給了MyPres
MySlide = MyPres.Slides.Add(1, Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutBlank);//像PPT實例中,添加一個空白頁,位置是“第一頁”
4.向PPT的幻燈片中添加元素
4.1文本框
Microsoft.Office.Interop.PowerPoint.TextRange MyTextRng = null;
MySlide.Shapes.AddTextbox(MsoTextOrientation.msoTextOrientationHorizontal, 21.5F, 365F, 670F, 270F);
MyTextRng = MySlide.Shapes[1].TextFrame.TextRange;//請注意此處Shapes的索引,由於文本框是第一個添加的Shapes,所以此處索引是1。
MyTextRng.Font.NameFarEast = "微軟雅黑";//文本框中,中文的字體
MyTextRng.Font.NameAscii = "Calibri";//文本框中,英文和數字的字體
MyTextRng.Text ="C#生成PPT";//顯示的內容
MyTextRng.Font.Bold = MsoTriState.msoTrue;//是否加粗
MyTextRng.Font.Color.RGB = A+ B * 256 + C * 256 * 256;//字體顏色,其中ABC直接用自定義顏色中的數字代替即可。
MyTextRng.Characters(1, 10).Font.Size = 24;//個性化設計。第1個字符開始,長度為10的字符,字體大小是24.
MyTextRng.ParagraphFormat.Alignment = Microsoft.Office.Interop.PowerPoint.PpParagraphAlignment.ppAlignLeft;//文本對齊方式(水平方向)
MySlide.Shapes[1].TextFrame.VerticalAnchor = MsoVerticalAnchor.msoAnchorMiddle; 文本對齊方式(垂直方向)
心得:最重要的設置在Font屬性中。其他設置,基本可以參考PPT中元素屬性的設置方式來找到。比如我在寫文本水平對齊方式時(左對齊,居中,右對齊),在PPT中,我們直接點擊“段落”中的快捷鍵即可。所以我就找“段落”的英文,正好Alignment是對齊的意思,所以就找到了。
4.2 圖形(矩形)
MySlide.Shapes.AddShape(MsoAutoShapeType.msoShapeRectangle, 8.5F, 6.5F, 705F, 525F);
MySlide.Shapes[1].Line.ForeColor.RGB = A + B * 256 + C * 256 * 256;//改變線條顏色
MySlide.Shapes[1].Fill.Transparency = 1;//控制填充色為透明
MySlide.Shapes[1].Line.Style = MsoLineStyle.msoLineSingle;//改變線型里的復合類型
MySlide.Shapes[1].Line.Weight = 1F;//改變線粗細
MySlide.Shapes[1].Shadow.Style = MsoShadowStyle.msoShadowStyleOuterShadow;//控制陰影類型
MySlide.Shapes[1].Shadow.ForeColor.RGB = 0;//控制陰影顏色
MySlide.Shapes[1].Shadow.Transparency = 0.6F;//控制透明度
MySlide.Shapes[1].Shadow.Size = 100F;//控制大小
MySlide.Shapes[1].Shadow.Blur = 4F;//控制虛化
MySlide.Shapes[1].Shadow.OffsetX = 2.1F;//控制距離;
MySlide.Shapes[1].Shadow.OffsetY = 2.1F;//與offsetX共同決定角度
心得:基本的一些設置,通過英文就可以辨別。不過有些屬性的設置是否與預期一致,需要等圖形生成后再進一步確認。
4.3 圖片
MySlide.Shapes.AddPicture("文件路徑", MsoTriState.msoFalse, MsoTriState.msoTrue, 27F, 24F, 665F, 333F);
4.4 表格
Microsoft.Office.Interop.PowerPoint.Table MyTable = null;
MyTable = MySlide.Shapes.AddTable(19, 5, 40F, 100F, 10F, 10F).Table;//創建時規定的寬和高,不是表格最終的大小。
MyTable.Cell(k, j).Shape.TextFrame.TextRange.Font.Size = 10;
MyTable.Cell(k, j).Shape.TextFrame.TextRange.Font.Color.RGB = A + B * 256 + C * 256 * 256;
MyTable.Cell(k, j).Shape.TextFrame.TextRange.Font.NameAscii = "Arial";
MyTable.Cell(k, j).Shape.TextFrame.TextRange.Font.NameFarEast = "微軟雅黑";
MyTable.Cell(k, j).Shape.TextFrame.TextRange.Font.Bold = MsoTriState.msoTrue;
MyTable.Cell(k, j).Shape.TextFrame.TextRange.ParagraphFormat.Alignment = Microsoft.Office.Interop.PowerPoint.PpParagraphAlignment.ppAlignCenter;
MyTable.Cell(k, j).Shape.TextFrame.VerticalAnchor = MsoVerticalAnchor.msoAnchorMiddle;
MyTable.Cell(k, j).Shape.Fill.ForeColor.RGB = 0;
MyTable.Cell(k, j).Shape.TextFrame.TextRange.Text = "C#生成PPT";
這里的設置,幾乎和文本框的設置一樣。只不過需要先選定Cell。一些個性化的設計,比如合並拆分單元格,邊框顏色,按照一般的英文意思都能找到。
4.5 圖表
Microsoft.Office.Interop.PowerPoint.Chart MyChart = null;//圖表
Microsoft.Office.Interop.PowerPoint.ChartData MyChartData = null;//圖表的數據源
Microsoft.Office.Interop.PowerPoint.Axis MyYvalaxis = null;//圖表的縱坐標
Microsoft.Office.Interop.PowerPoint.Axis MyXvalaxis = null;//圖表的橫坐標
Microsoft.Office.Interop.PowerPoint.DataLabels MyDataLabels = null;//圖表的數據標簽
Microsoft.Office.Interop.PowerPoint.Series MySeries = null;//數據系列
Microsoft.Office.Interop.PowerPoint.ChartGroups MyChartGroups = null;//數據系列-系列選項
Microsoft.Office.Interop.PowerPoint.Points MyPoints = null; //數據系列
MyChart = MySlide.Shapes.AddChart(Microsoft.Office.Core.XlChartType.xlColumnClustered, 35F, 205F, 642F, 227F).Chart;//添加柱形圖
MyChartData = MyChart.ChartData;//實例化數據源
Microsoft.Office.Interop.Excel.Workbook MyDataWorkbook_2 = (Microsoft.Office.Interop.Excel.Workbook)MyChartData.Workbook;//由於PPT的數據源是EXCEL工作表,所以此處還要調用EXCEL。
MyDataWorkbook_2.Application.WindowState = XlWindowState.xlMinimized;//不想看那么多窗口,所以最小化了。
Microsoft.Office.Interop.Excel.Worksheet MyDataWorksheet_2 = (Microsoft.Office.Interop.Excel.Worksheet)MyDataWorkbook_2.Worksheets[1];//實例化工作表
Microsoft.Office.Interop.Excel.Range tRange_2 = MyDataWorksheet_2.Cells.get_Range("A1", "C10");//選定數據區域
Microsoft.Office.Interop.Excel.ListObject tbl1_2 = MyDataWorksheet_2.ListObjects[1];
tbl1_2.Resize(tRange_2);
//賦值
((Microsoft.Office.Interop.Excel.Range)(MyDataWorksheet_2.Cells.get_Range("A2"))).FormulaR1C1 = "全國得分";
((Microsoft.Office.Interop.Excel.Range)(MyDataWorksheet_2.Cells.get_Range("A3"))).FormulaR1C1 = null;
//圖表標題
MyChart.ChartTitle.Delete();
//縱軸
MyYvalaxis = (Microsoft.Office.Interop.PowerPoint.Axis)MyChart.Axes(Microsoft.Office.Interop.PowerPoint.XlAxisType.xlValue, Microsoft.Office.Interop.PowerPoint.XlAxisGroup.xlPrimary);
MyYvalaxis.MajorGridlines.Delete();//刪除主橫網絡線
MyYvalaxis.MajorUnit = 0.5F;
MyYvalaxis.MinimumScale = 0.0F;
MyYvalaxis.MaximumScale = 1.5F;
MyYvalaxis.Format.Line.ForeColor.RGB = A + B * 256 + C * 256 * 256; ;//坐標軸顏色
MyYvalaxis.Format.Line.Transparency = 1F;//坐標軸是否透明;此句必須先指定顏色,否則無效
MyYvalaxis.TickLabels.Delete();//刪除坐標標簽
//橫軸
MyXvalaxis = (Microsoft.Office.Interop.PowerPoint.Axis)MyChart.Axes(Microsoft.Office.Interop.PowerPoint.XlAxisType.xlCategory, Microsoft.Office.Interop.PowerPoint.XlAxisGroup.xlPrimary);
MyXvalaxis.MajorTickMark = Microsoft.Office.Interop.PowerPoint.XlTickMark.xlTickMarkOutside;//主要刻度線類型
MyXvalaxis.Format.Line.Weight = 0.75F;//線型寬度
MyXvalaxis.Format.Line.ForeColor.RGB = A + B * 256 + C * 256 * 256;//線條顏色
MyXvalaxis.TickLabelPosition = Microsoft.Office.Interop.PowerPoint.XlTickLabelPosition.xlTickLabelPositionNone;
//圖例
MyChart.Legend.Delete();
//數據標簽格式和系列
//系列1
MySeries = (Microsoft.Office.Interop.PowerPoint.Series)MyChart.SeriesCollection(1);
MySeries.HasDataLabels = true;
MySeries.Format.Fill.ForeColor.RGB = A + B * 256 + C * 256 * 256;
MySeries.Format.Line.ForeColor.RGB = A + B * 256 + C * 256 * 256;
MySeries.Format.Line.Weight = 1.5F;
MySeries.Format.Shadow.Style = MsoShadowStyle.msoShadowStyleOuterShadow;//控制陰影類型
MySeries.Format.Shadow.ForeColor.RGB = 0;//控制陰影顏色
MySeries.Format.Shadow.Transparency = 0.6F;//控制透明度
MySeries.Format.Shadow.Size = 100F;//控制大小
MySeries.Format.Shadow.Blur = 4F;//控制虛化
MySeries.Format.Shadow.OffsetX = 2.1F;//控制距離;
MySeries.Format.Shadow.OffsetY = 2.1F;//與offsetX共同決定角度
//柱子顏色
MyPoints = (Microsoft.Office.Interop.PowerPoint.Points)MySeries.Points();
MyPoints.Item(1).Format.Fill.ForeColor.RGB = A + B * 256 + B * 256 * 256;//系列1中,第1個柱子的顏色
//柱子距離
MyChartGroups = (Microsoft.Office.Interop.PowerPoint.ChartGroups)MyChart.ChartGroups();
MyChartGroups.Item(1).GapWidth = 50;
//數據標簽
MyDataLabels = (Microsoft.Office.Interop.PowerPoint.DataLabels)MySeries.DataLabels();
MyDataLabels.Position = Microsoft.Office.Interop.PowerPoint.XlDataLabelPosition.xlLabelPositionOutsideEnd;
MyDataLabels.NumberFormat = "0.0%";
MyDataLabels.Format.TextFrame2.TextRange.Font.Size = 9F;
MyDataLabels.Format.TextFrame2.TextRange.Font.NameAscii = "Calibri";
MyDataLabels.Format.TextFrame2.TextRange.Font.Bold = MsoTriState.msoTrue;
//系列2
MySeries = (Microsoft.Office.Interop.PowerPoint.Series)MyChart.SeriesCollection(2);
MySeries.HasDataLabels = true;
MySeries.Format.Fill.ForeColor.RGB = A + B * 256 + C * 256 * 256;
MySeries.Format.Line.ForeColor.RGB = A + B * 256 + C * 256 * 256;
MySeries.Format.Line.Weight = 1.5F;
MySeries.Format.Shadow.Style = MsoShadowStyle.msoShadowStyleOuterShadow;//控制陰影類型
MySeries.Format.Shadow.ForeColor.RGB = 0;//控制陰影顏色
MySeries.Format.Shadow.Transparency = 0.6F;//控制透明度
MySeries.Format.Shadow.Size = 100F;//控制大小
MySeries.Format.Shadow.Blur = 4F;//控制虛化
MySeries.Format.Shadow.OffsetX = 2.1F;//控制距離
MySeries.Format.Shadow.OffsetY = 2.1F;//與offsetX共同決定角度
//柱子距離
MyChartGroups = (Microsoft.Office.Interop.PowerPoint.ChartGroups)MyChart.ChartGroups();
MyChartGroups.Item(1).GapWidth = 50;
//數據標簽
MyDataLabels = (Microsoft.Office.Interop.PowerPoint.DataLabels)MySeries.DataLabels();
MyDataLabels.Position = Microsoft.Office.Interop.PowerPoint.XlDataLabelPosition.xlLabelPositionOutsideEnd;
MyDataLabels.NumberFormat = "0.0%";
MyDataLabels.Format.TextFrame2.TextRange.Font.Size = 9F;
MyDataLabels.Format.TextFrame2.TextRange.Font.NameAscii = "Calibri";
MyDataLabels.Format.TextFrame2.TextRange.Font.Italic = MsoTriState.msoTrue;
==*****************************==
C# 創建幻燈片
//C# code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Core;
using PowerPoint=Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Interop.Graph;
using System.Runtime.InteropServices;
using System.IO; namespace Example {
public partial class Form1 : Form
{ public Form1()
{
InitializeComponent();
}
String MyTemplateFile = Directory.GetCurrentDirectory() + "\\Blends.pot"; //瀏覽圖像文件
private void button1_Click(object sender, EventArgs e)
{
this.openFileDialog1.Filter="所有圖像文件(JPeg, Gif, Bmp, etc.)|*.jpg;*.jpeg; *.gif;*.bmp;*.tif; *.tiff; *.png| JPeg 圖像文件 (*.jpg;*.jpeg)|*.jpg;*.jpeg |GIF 圖像文件(*.gif)|*.gif |BMP 圖像文件(*.bmp)|*.bmp|Tiff 圖像文件(*.tif;*.tiff) |*.tif; *.tiff|Png 圖像文件(*.png)| *.png |所有文件 (*.*)|*.*";
if(this.openFileDialog1.ShowDialog()==DialogResult.OK)
{
string MyFileName=this.openFileDialog1.FileName;
this.pictureBox1.Image=Image.FromFile(MyFileName);
}
} //創建播放幻燈片
private void button2_Click(object sender, EventArgs e)
{
string MyFileName; PowerPoint.ApplicationClass MyApp;
PowerPoint.Presentations MyPresSet;
PowerPoint._Presentation MyPres;
PowerPoint.Slides MySlides;
PowerPoint._Slide MySlide;
PowerPoint.SlideShowTransition MySST;
PowerPoint.SlideShowSettings MySSS;
PowerPoint.SlideRange MySldRng;
PowerPoint.SlideShowWindows MySSWs;
bool MyAssistantOn;
int i, MyCount;
PowerPoint.TextRange MyTextRng;
Microsoft.Office.Interop.Graph.Chart MyChart;
PowerPoint.Shapes MyShapes;
PowerPoint.Shape MyShape;
try {
MyFileName = this.openFileDialog1.FileName;
if (!File.Exists(MyFileName))
{
MessageBox.Show("幻燈片模板文件實際不存在!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
MyApp = new PowerPoint.ApplicationClass();
MyApp.Visible = MsoTriState.msoCTrue;
MyPresSet = MyApp.Presentations;
MyPres = MyPresSet.Open(MyTemplateFile, MsoTriState.msoFalse, MsoTriState.msoTrue, MsoTriState.msoTrue);
MySlides = MyPres.Slides;
//創建幻燈片第一頁
MySlide=MySlides.Add(1,PowerPoint.PpSlideLayout.ppLayoutTitleOnly);
MyTextRng=MySlide.Shapes[1].TextFrame.TextRange;
MyTextRng.Text="125555555555555555555552111111";
MyTextRng.Font.Name="宋體";
MyTextRng.Font.Size=48;
MySlide.Shapes.AddPicture(MyFileName, MsoTriState.msoFalse,MsoTriState.msoTrue,150, 150, 500, 350);
//創建幻燈片第二頁
MySlide=MySlides.Add(2, PowerPoint.PpSlideLayout.ppLayoutTitleOnly);
MyTextRng=MySlide.Shapes[1].TextFrame.TextRange; MyTextRng.Text="演示繪制餅圖";
MyTextRng.Font.Name="宋體";
MyTextRng.Font.Size= 48;
MyChart = (Microsoft.Office.Interop.Graph.Chart)MySlide.Shapes.AddOLEObject(150, 150, 480, 320, "MSGraph.Chart.8", "", MsoTriState.msoFalse, "", 0, "",
MsoTriState.msoFalse).OLEFormat.Object;
MyChart.ChartType = Microsoft.Office.Interop.Graph.XlChartType.xl3DPie;
MyChart.Legend.Position = Microsoft.Office.Interop.Graph.XlLegendPosition.xlLegendPositionBottom;
MyChart.HasTitle= true; MyChart.ChartTitle.Text="經典系列叢書2006年度圖書銷量";
//創建幻燈片第三頁
MySlide=MySlides.Add(3, PowerPoint.PpSlideLayout.ppLayoutBlank);
MySlide.FollowMasterBackground=MsoTriState.msoFalse;
MyShapes=MySlide.Shapes;
MyShape=MyShapes.AddTextEffect(MsoPresetTextEffect.msoTextEffect29,"經典編程實例集錦", "Impact", 80,MsoTriState.msoFalse, MsoTriState.msoFalse, 50, 200);
//創建幻燈片第四頁
MySlide=MySlides.Add(4, PowerPoint.PpSlideLayout.ppLayoutBlank);
MySlide.FollowMasterBackground=MsoTriState.msoFalse;
MyShapes=MySlide.Shapes;
MyShape=MyShapes.AddTextEffect(MsoPresetTextEffect.msoTextEffect30,"精彩編程實例集錦","Impact", 60,MsoTriState.msoFalse, MsoTriState.msoFalse, 150, 10);
MyShape=MyShapes.AddTextEffect(MsoPresetTextEffect.msoTextEffect29,"羅斌編著", "Impact", 80, MsoTriState.msoFalse, MsoTriState.msoFalse, 350, 250);
//創建幻燈片第五頁
MySlide=MySlides.Add(5, PowerPoint.PpSlideLayout.ppLayoutBlank);
MySlide.FollowMasterBackground=MsoTriState.msoFalse;
MyShapes=MySlide.Shapes;
MyShape=MyShapes.AddTextEffect(MsoPresetTextEffect.msoTextEffect27,"The End", "Impact", 96, MsoTriState.msoFalse, MsoTriState.msoFalse, 230, 200);
MyCount=(int)MySlides.Count; int[] MySlideIdx=new int[MyCount];
for (i = 0; i < MyCount; i++)
{
MySlideIdx[i]=i+1;
}
MySldRng = MySlides.Range(MySlideIdx);
MySST=MySldRng.SlideShowTransition;
MySST.AdvanceOnTime=MsoTriState.msoTrue;
MySST.AdvanceTime=1;
MySST.EntryEffect=PowerPoint.PpEntryEffect.ppEffectBoxOut;
MyAssistantOn=MyApp.Assistant.On;
MyApp.Assistant.On=false;
MySSS= MyPres.SlideShowSettings;
MySSS.StartingSlide=1;
MySSS.EndingSlide=1;
MySSS.Run();
MySSWs= MyApp.SlideShowWindows;
while (MySSWs.Count >= 1)
{
System.Threading.Thread.Sleep(2000);
}
if (MyAssistantOn)
{
MyApp.Assistant.On = true;
MyApp.Assistant.Visible = false;
}
MyPres.Close();
MyApp.Quit();
}
catch (Exception MyEx)
{
MessageBox.Show(MyEx.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
C#操作PowerPoint的基本代碼
包括打開ppt文件、讀取幻燈頁,插入幻燈片,自動播放等
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OFFICECORE = Microsoft.Office.Core;
using POWERPOINT = Microsoft.Office.Interop.PowerPoint;
using System.Windows;
using System.Collections;
using System.Windows.Controls;
namespace PPTDraw.PPTOperate
{
/// <summary>
/// PPT文檔操作實現類.
/// </summary>
public class OperatePPT
{
#region=========基本的參數信息=======
POWERPOINT.Application objApp = null;
POWERPOINT.Presentation objPresSet = null;
POWERPOINT.SlideShowWindows objSSWs;
POWERPOINT.SlideShowTransition objSST;
POWERPOINT.SlideShowSettings objSSS;
POWERPOINT.SlideRange objSldRng;
bool bAssistantOn;
double pixperPoint = 0;
double offsetx = 0;
double offsety = 0;
#endregion
#region===========操作方法==============
/// <summary>
/// 打開PPT文檔並播放顯示。
/// </summary>
/// <param name="filePath">PPT文件路徑</param>
public void PPTOpen(string filePath)
{
//防止連續打開多個PPT程序.
if (this.objApp != null) { return; }
try
{
objApp = new POWERPOINT.Application();
//以非只讀方式打開,方便操作結束后保存.
objPresSet = objApp.Presentations.Open(filePath, OFFICECORE.MsoTriState.msoFalse, OFFICECORE.MsoTriState.msoFalse, OFFICECORE.MsoTriState.msoFalse);
//Prevent Office Assistant from displaying alert messages:
bAssistantOn = objApp.Assistant.On;
objApp.Assistant.On = false;
objSSS = this.objPresSet.SlideShowSettings;
objSSS.Run();
}
catch (Exception ex)
{
this.objApp.Quit();
}
}
/// <summary>
/// 自動播放PPT文檔.
/// </summary>
/// <param name="filePath">PPTy文件路徑.</param>
/// <param name="playTime">翻頁的時間間隔.【以秒為單位】</param>
public void PPTAuto(string filePath, int playTime)
{
//防止連續打開多個PPT程序.
if (this.objApp != null) { return; }
objApp = new POWERPOINT.Application();
objPresSet = objApp.Presentations.Open(filePath, OFFICECORE.MsoTriState.msoCTrue, OFFICECORE.MsoTriState.msoFalse, OFFICECORE.MsoTriState.msoFalse);
// 自動播放的代碼(開始)
int Slides = objPresSet.Slides.Count;
int[] SlideIdx = new int[Slides];
for (int i = 0; i < Slides; i++) { SlideIdx[i] = i + 1; };
objSldRng = objPresSet.Slides.Range(SlideIdx);
objSST = objSldRng.SlideShowTransition;
//設置翻頁的時間.
objSST.AdvanceOnTime = OFFICECORE.MsoTriState.msoCTrue;
objSST.AdvanceTime = playTime;
//翻頁時的特效!
objSST.EntryEffect = POWERPOINT.PpEntryEffect.ppEffectCircleOut;
//Prevent Office Assistant from displaying alert messages:
bAssistantOn = objApp.Assistant.On;
objApp.Assistant.On = false;
//Run the Slide show from slides 1 thru 3.
objSSS = objPresSet.SlideShowSettings;
objSSS.StartingSlide = 1;
objSSS.EndingSlide = Slides;
objSSS.Run();
//Wait for the slide show to end.
objSSWs = objApp.SlideShowWindows;
while (objSSWs.Count >= 1) System.Threading.Thread.Sleep(playTime * 100);
this.objPresSet.Close();
this.objApp.Quit();
}
/// <summary>
/// PPT下一頁。
/// </summary>
public void NextSlide()
{
if (this.objApp != null)
this.objPresSet.SlideShowWindow.View.Next();
}
/// <summary>
/// PPT上一頁。
/// </summary>
public void PreviousSlide()
{
if (this.objApp != null)
this.objPresSet.SlideShowWindow.View.Previous();
}
/// <summary>
/// 對當前的PPT頁面進行圖片插入操作。
/// </summary>
/// <param name="alImage">圖片對象信息數組</param>
/// <param name="offsetx">插入圖片距離左邊長度</param>
/// <param name="pixperPoint">距離比例值</param>
/// <returns>是否添加成功!</returns>
public bool InsertToSlide(List<PPTOBJ> listObj)
{
bool InsertSlide = false;
if (this.objPresSet != null)
{
this.SlideParams();
int slipeint = objPresSet.SlideShowWindow.View.CurrentShowPosition;
foreach (PPTOBJ myobj in listObj)
{
objPresSet.Slides[slipeint].Shapes.AddPicture(
myobj.Path, //圖片路徑
OFFICECORE.MsoTriState.msoFalse,
OFFICECORE.MsoTriState.msoTrue,
(float)((myobj.X - this.offsetx) / this.pixperPoint), //插入圖片距離左邊長度
(float)(myobj.Y / this.pixperPoint), //插入圖片距離頂部高度
(float)(myobj.Width / this.pixperPoint), //插入圖片的寬度
(float)(myobj.Height / this.pixperPoint) //插入圖片的高度
);
}
InsertSlide = true;
}
return InsertSlide;
}
/// <summary>
/// 計算InkCanvas畫板上的偏移參數,與PPT上顯示圖片的參數。
/// 用於PPT加載圖片時使用
/// </summary>
private void SlideParams()
{
double slideWidth = this.objPresSet.PageSetup.SlideWidth;
double slideHeight = this.objPresSet.PageSetup.SlideHeight;
double inkCanWidth = SystemParameters.PrimaryScreenWidth;//inkCan.ActualWidth;
double inkCanHeight = SystemParameters.PrimaryScreenHeight;//inkCan.ActualHeight ;
if ((slideWidth / slideHeight) > (inkCanWidth / inkCanHeight))
{
this.pixperPoint = inkCanHeight / slideHeight;
this.offsetx = 0;
this.offsety = (inkCanHeight - slideHeight * this.pixperPoint) / 2;
}
else
{
this.pixperPoint = inkCanHeight / slideHeight;
this.offsety = 0;
this.offsetx = (inkCanWidth - slideWidth * this.pixperPoint) / 2;
}
}
/// <summary>
/// 關閉PPT文檔。
/// </summary>
public void PPTClose()
{
//裝備PPT程序。
if (this.objPresSet != null)
{
//判斷是否退出程序,可以不使用。
//objSSWs = objApp.SlideShowWindows;
//if (objSSWs.Count >= 1)
//{
if (MessageBox.Show("是否保存修改的筆跡!", "提示", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
this.objPresSet.Save();
//}
//this.objPresSet.Close();
}
if (this.objApp != null)
this.objApp.Quit();
GC.Collect();
}
#endregion
}
}
==************************=========