c#如何操作ppt的播放 【转】
C#控制ppt的代碼
包括打開ppt文件、讀取幻燈頁,插入幻燈片,自動(dòng)播放等
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文檔操作實(shí)現(xiàn)類.
? /// </summary>
? public class OperatePPT
? {
? ? #region=========基本的參數(shù)信息=======
? ? 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)
? ? {
? ? ? //防止連續(xù)打開多個(gè)PPT程序.
? ? ? if (this.objApp != null) { return; }
? ? ? try
? ? ? {
? ? ? ? objApp = new POWERPOINT.Application();
? ? ? ? //以非只讀方式打開,方便操作結(jié)束后保存.
? ? ? ? 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>
? ? /// 自動(dòng)播放PPT文檔.
? ? /// </summary>
? ? /// <param name="filePath">PPTy文件路徑.</param>
? ? /// <param name="playTime">翻頁的時(shí)間間隔.【以秒為單位】</param>
? ? public void PPTAuto(string filePath, int playTime)
? ? {
? ? ? //防止連續(xù)打開多個(gè)PPT程序.
? ? ? if (this.objApp != null) { return; }
? ? ? objApp = new POWERPOINT.Application();
? ? ? objPresSet = objApp.Presentations.Open(filePath, OFFICECORE.MsoTriState.msoCTrue, OFFICECORE.MsoTriState.msoFalse, OFFICECORE.MsoTriState.msoFalse);
? ? ? // 自動(dòng)播放的代碼(開始)
? ? ? 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;
? ? ? //設(shè)置翻頁的時(shí)間.
? ? ? objSST.AdvanceOnTime = OFFICECORE.MsoTriState.msoCTrue;
? ? ? objSST.AdvanceTime = playTime;
? ? ? //翻頁時(shí)的特效!
? ? ? 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>
? ? /// 對(duì)當(dāng)前的PPT頁面進(jìn)行圖片插入操作。
? ? /// </summary>
? ? /// <param name="alImage">圖片對(duì)象信息數(shù)組</param>
? ? /// <param name="offsetx">插入圖片距離左邊長(zhǎng)度</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), ? ?//插入圖片距離左邊長(zhǎng)度
? ? ? ? ? ? ?(float)(myobj.Y / this.pixperPoint), ? ?//插入圖片距離頂部高度
? ? ? ? ? ? ?(float)(myobj.Width / this.pixperPoint), ?//插入圖片的寬度
? ? ? ? ? ? ?(float)(myobj.Height / this.pixperPoint) ?//插入圖片的高度
? ? ? ? ? ?);
? ? ? ? }
? ? ? ? InsertSlide = true;
? ? ? }
? ? ? return InsertSlide;
? ? }
? ? /// <summary>
? ? /// 計(jì)算InkCanvas畫板上的偏移參數(shù),與PPT上顯示圖片的參數(shù)。
? ? /// 用于PPT加載圖片時(shí)使用
? ? /// </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>
? ? /// 關(guān)閉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
? }
}
?
本文出自 “我的筆記” 博客,請(qǐng)務(wù)必保留此出處http://9891814.blog.51cto.com/9881814/1627298
轉(zhuǎn)載于:https://www.cnblogs.com/mazhenyu/p/7660759.html
總結(jié)
以上是生活随笔為你收集整理的c#如何操作ppt的播放 【转】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重走长征路---OI每周刷题记录---1
- 下一篇: 托米去购物