91久久久久久久久_欧美日韩中文_在线观看中文字幕亚洲_夜夜骑首页_精品久久伊人_天天色天天射天天操

當(dāng)前位置: 首頁(yè)IT技術(shù) → silverlight自定義控件之多媒體視頻播放器

silverlight自定義控件之多媒體視頻播放器

更多

Silverlight本身提供了多媒體播放控件,但并沒(méi)有封裝好,可以直接使用的控件。在網(wǎng)上搜索了一些,都不是很適用,有些過(guò)于復(fù)雜要引用一大堆dll,感覺(jué)很臃腫,有些樣式風(fēng)格不適合。silverlight只提供了MediaElement,并不像以前html那樣現(xiàn)成的直接使用那么方便,所以就自己封裝一下,做一個(gè)滿足基本功能的簡(jiǎn)單播放器。通過(guò)本篇隨筆認(rèn)識(shí)一下Blend強(qiáng)大的修改控件樣式魔力,和實(shí)現(xiàn)一個(gè)簡(jiǎn)單的播放器。

功能點(diǎn):

1、播放、暫停及顯示當(dāng)前播放狀態(tài)

2、實(shí)時(shí)顯示已播放時(shí)間

3、播放進(jìn)度條,并能拖動(dòng)播放位置

4、全屏按鈕及雙擊播放畫(huà)面入或退出全屏

5、調(diào)整音量

6、播放列表

播放器的基本功能點(diǎn)就是需求,將需求分解,羅列出實(shí)現(xiàn)難點(diǎn)和功能要點(diǎn),評(píng)估工作量及風(fēng)險(xiǎn)。

一、認(rèn)識(shí)MediaElement控件

public MediaElementState CurrentState { get; }
  MediaElement 的當(dāng)前狀態(tài)。狀態(tài)可以為下列值之一(如在 MediaElementState 枚舉中所定義):Buffering、Closed、Opening、Paused、Playing 或 Stopped。
默認(rèn)值為 Closed。

public bool AutoPlay { get; set; }
  如果自動(dòng)播放,則為 true;否則為 false。默認(rèn)值為 true。如果設(shè)置 Source 屬性前將此屬性設(shè)置為 true,則設(shè)置Source屬性時(shí)自動(dòng)播放視頻。

public Uri Source { get; set; }
  獲取或設(shè)置 MediaElement 上的媒體來(lái)源。即指定一個(gè)視頻的統(tǒng)一資源標(biāo)識(shí)符 (URI) 字符串。

public double Volume { get; set; }
  獲取或設(shè)置媒體的音量大小。

//當(dāng)媒體流已被驗(yàn)證和打開(kāi)且已讀取文件頭時(shí)發(fā)生。在該自定義控件中主要通過(guò)該事件獲取視頻的總時(shí)長(zhǎng)。

public event RoutedEventHandler MediaOpened

void mediaElement_MediaOpened(object sender, RoutedEventArgs e)

{

this.playTools.TotaPlayTime = (int)this.mediaElement.NaturalDuration.TimeSpan.TotalSeconds;

}

//當(dāng) MediaElement 不再播放音頻或視頻時(shí)發(fā)生。在該自定義控件中主要通過(guò)該事件設(shè)置MediaElement為Stop,并判斷是否循環(huán)播放而進(jìn)行繼續(xù)循環(huán)播放。

public event RoutedEventHandler MediaEnded

void mediaElement_MediaEnded(object sender, RoutedEventArgs e)

{

this.mediaElement.Stop();

if (this.IsReplay)

{

this.mediaElement.Play();

}

}

//當(dāng) CurrentState 屬性的值更改時(shí)發(fā)生。在該自定義控件中主要通過(guò)該事件顯示當(dāng)前視頻播放狀態(tài)信息。

public event RoutedEventHandler CurrentStateChanged

if (this.mediaElement.CurrentState == MediaElementState.Buffering)

{

this.playTools.CurrentMessage = this.mediaElement.CurrentState + " " + Math.Round(this.mediaElement.BufferingProgress * 100, 0).ToString() + "%";

}

//在存在與媒體 Source 關(guān)聯(lián)的錯(cuò)誤時(shí)發(fā)生。MediaFailed 事件可在下列條件下發(fā)生:1、未找到文件。2、無(wú)效的(無(wú)法識(shí)別的或不支持的)媒體格式。3、播放期間未知的媒體錯(cuò)誤。

//在該自定義控件中主要通過(guò)該事件顯示錯(cuò)誤信息。

public event EventHandler MediaFailed

void mediaElement_MediaFailed(object sender, ExceptionRoutedEventArgs e)

{

this.playTools.CurrentMessage = e.ErrorException.Message;

}

//該事件是播放時(shí)發(fā)生,用于獲取當(dāng)前已播放時(shí)間

CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering);

void CompositionTarget_Rendering(object sender, EventArgs e)

{

int currentTime = (int)this.mediaElement.Position.TotalSeconds;

this.playTools.CurrentPlayTime = currentTime;

}

熱門(mén)評(píng)論
最新評(píng)論
發(fā)表評(píng)論 查看所有評(píng)論(0)
昵稱(chēng):
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)
主站蜘蛛池模板: 在线看片a| 午夜久久久 | 亚洲国产成人av | 在线观看的av网站 | 国产成人免费在线视频 | 亚洲一区高清 | 亚洲国产精品久久久久 | 欧美色图一区 | 激情综合五月天 | 久久精品99国产国产精 | 日韩免费一级片 | 欧美色综合天天久久综合精品 | 日韩精品不卡 | 国产精品天堂 | 午夜成人影片 | 成人在线精品 | 精品一区二区三 | 黄色大片免费在线观看 | 91亚洲成人| 一级片大全 | 国产成人免费在线 | 极品淫少妇 | 欧美一二区 | 欧美日韩亚洲一区二区 | 国产精品二区三区 | 日韩一级av毛片 | 免费av网址在线观看 | 久久依人| 男人天堂亚洲 | 免费看黄色小视频 | 久久精品黄色 | 亚洲国产精品一区 | 国产一区精品在线观看 | av福利网站| 超碰97久久| 精品一区二区在线播放 | 日韩欧美亚洲国产 | 在线免费观看av网站 | av手机在线观看 | 婷婷激情综合网 | 天天操一操|