成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Windows Phone開發(20):MediaElement和VideoBrush合作

移動開發
閑話不扯了,開始做練習,首先自備一個3gp或MP4文件,你自己隨便找一個,當然,其它格式也可以,呵呵,只要支持就行了,因為我們在模擬器中觀看效果,所以最后用一些常用的格式,模擬器不是所有的媒體文件都能支持,具體請參考SDK文檔相關說明。

前面說的那么多控件都是“靜態”的,都是“啞吧”的,今天,你有沒有興趣研究一下,既能“有聲有色”又操作簡單的控件嗎?如果有,請隨我來。

MediaElement播放多媒體文件。

首先,隆重介紹一下MediaElement,為什么要隆重呢?因為它簡單,真的,你一定會玩的,但是,MediaElement功能強大,它可以播放音頻和視頻,只要支持的格式就行了。

要設置播放的音頻或視頻文件,你只需要設置Source屬性即可,它其實就是一個URI,如果要播放你項目中的媒體文件,你先要把媒體文件添加到你的項目中,把它的生成操作設置為資源,不用我說了,都會了吧。

你一定會問,能播放網絡的URI指向的媒體文件嗎?呵,你試一試就知道了。

閑話不扯了,開始做練習,首先自備一個3gp或MP4文件,你自己隨便找一個,當然,其它格式也可以,呵呵,只要支持就行了,因為我們在模擬器中觀看效果,所以最后用一些常用的格式,模擬器不是所有的媒體文件都能支持,具體請參考SDK文檔相關說明。

MediaElement是非常易用的,我簡單說說它的一些常用的屬性,相信你自己研究兩下就懂的。
1、Source:剛才說了,就是你要播放的媒體文件;
2、AutoPlay:是否自動播放,呵,這個估計你比我更懂了;
3、Balance:立體聲左右聲道的音量比,就是一個平衡值,從-1到1,0在中間,所以是默認值;
4、Stretch:與Image控件一樣,如何拉伸,或者保持縱橫比;
5、Volume:音量,0-1范圍內,默認0.5.

好的,下面看看第一個練習的布局。

  1. <phone:PhoneApplicationPage.Resources> 
  2.     <LinearGradientBrush x:Key="pathFill" StartPoint="0.5,0" EndPoint="0.5,1"
  3.         <GradientStop Color="LightGreen" Offset="0"/> 
  4.         <GradientStop Color="Orange" Offset="1"/> 
  5.     </LinearGradientBrush> 
  6.     <Style x:Key="btnStyle" TargetType="Button"
  7.         <Setter Property="Height" Value="80"/> 
  8.         <Setter Property="Width" Value="80"/> 
  9.         <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
  10.         <Setter Property="VerticalContentAlignment" Value="Stretch"/> 
  11.         <Setter Property="BorderThickness" Value="0"/> 
  12.     </Style> 
  13. </phone:PhoneApplicationPage.Resources> 
  14. <Grid> 
  15.     <Grid.ColumnDefinitions> 
  16.         <ColumnDefinition Width="*"/> 
  17.         <ColumnDefinition Width="auto"/> 
  18.     </Grid.ColumnDefinitions> 
  19.     <StackPanel Orientation="Vertical" 
  20.                 Grid.Column="1"
  21.         <Button Name="btnPlay" Style="{StaticResource btnStyle}" Click="btnPlay_Click"
  22.             <Button.Content> 
  23.                 <Path Data="M0,0 L0,40 L40,20 Z" Fill="{StaticResource pathFill}" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
  24.             </Button.Content> 
  25.         </Button> 
  26.         <Button Name="btnPause" Style="{StaticResource btnStyle}" Click="btnPause_Click"
  27.             <Button.Content> 
  28.                 <Path Data="M0,0 L0,40 L15,40 L15,0 Z M25,0 L25,40 L40,40 L40,0" Fill="{StaticResource pathFill}" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
  29.             </Button.Content> 
  30.         </Button> 
  31.         <Button Name="btnStop" Style="{StaticResource btnStyle}" Click="btnStop_Click"
  32.             <Button.Content> 
  33.                 <Path Data="M0,0 L0,40 L40,40 L40,0 Z" Fill="{StaticResource pathFill}" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
  34.             </Button.Content> 
  35.         </Button> 
  36.     </StackPanel> 
  37.     <MediaElement x:Name="me" Grid.Column="0" 
  38.                   Source="2.mp4" AutoPlay="False"/> 
  39. </Grid> 

說明一下,每個按鈕上的圖形是我手畫上去的,Content屬性設置為Path對象就可以繪制和填充路徑,為了簡明,我使用了路徑標記法,不用急,我后面的文章會介紹。

繼續把后臺的代碼寫完,更簡單了,就幾個方法的調用。

  1. private void btnPlay_Click(object sender, RoutedEventArgs e) 
  2.     this.me.Play(); 
  3. private void btnPause_Click(object sender, RoutedEventArgs e) 
  4.     this.me.Pause(); 
  5. private void btnStop_Click(object sender, RoutedEventArgs e) 
  6.     this.me.Stop(); 
  7. }

[[70850]]

把MediaElement和VideoBrush結合使用。

這是我們的第二個練習,VideoBrush也是一種畫刷,但它很特殊,它不用單色,不用漸變顏色,它用視頻來充填對象的表面,如元素的背景畫刷,前景畫刷等。

VideoBrush只要把SourceName的屬性值設置為 MediaElement的名字即可,也就是說,VideoBrush的源是來自MediaElement對象,你既可以兩個同時使用,當然,如果你只希 望用VideoBrush,那就把MediaElement的Visibility屬性設置為Collapsed。

有一點要說明,盡管在你的頁面中同時用到了MediaElement和 VideoBrush,但是,在其內部,其實只讀取一次數據,所以,引用多少個媒體文件只取決于MediaElement類,無論你在頁面使用多少個 VideoBrush,對性能是沒有任何影響的,前面我們說過資源,相信大家還記得,資源就是提高可重用率,不必要每次都要創建資源,不然會大大有損性 能,項目中的文件,上面說了,你只要把的生成操作設為資源,它就可以重復使用,而不會說我每增加一個引用就分配一個新實例,這不需要,資源實例只需創建一 次即可,可以供多處重復引用。

如果不使用資源,你想象一下是多么恐怖的事,假如一段MP3有2000個字節,如果你 每用到它都要在內存中new一個,如果我同時使用100個這個對象,就是100 * 2000 = 200000字節,這樣內存都被你耗盡了,然而如果是資源呢?只要它被創建,一直就是同一個引用,內存只為它分配2000個字節,無論你同時有1000個 地方在引用它,指向的都是同一塊內存區域,哈,不知道這樣解釋,夠不夠通俗易懂呢?

OK,就吹到這兒,下面我們再練一例,在TextBlock上顯示 Hello,但我希望這個TextBlock的前景不是使用顏色來填充,而是用視頻來填充,這樣一來,這段文字看起來就有聲有色了,是啊,你有沒有想起 Flash里面的濾罩層?但現在你可以通過VideoBrush類輕松地實現。

  1. <Grid> 
  2.     <MediaElement x:Name="me" Source="2.mp4" Visibility="Collapsed"/> 
  3.     <TextBlock x:Name="txt" Text="Hello" HorizontalAlignment="Center" FontFamily="Arial Black" FontSize="250" TextWrapping="Wrap"
  4.         <TextBlock.Foreground> 
  5.             <VideoBrush AlignmentX="Center" AlignmentY="Center" Stretch="Uniform" 
  6.                         SourceName="me"/> 
  7.         </TextBlock.Foreground> 
  8.     </TextBlock> 
  9. </Grid> 

[[70851]]

還記得前兩節課說過的變換和三維透視嗎?你不妨自己試試,知識就是通過“滾雪球”方式一點一點累積起來,所以,我強烈建議你去改一下上面的代碼,把上兩節的內容和本節的內容結合,看看能不能做出很美觀的特效出來。

責任編輯:閆佳明 來源: oschina
相關推薦

2013-04-17 09:47:10

Windows PhoWindows Pho

2010-04-21 17:07:54

Windows Pho

2013-07-30 12:37:56

Windows PhoWindows Pho

2013-04-17 14:19:51

Windows PhoWindows Pho

2011-04-22 09:11:23

Windows Pho諾基亞微軟

2013-04-17 14:00:06

Windows PhoWindows Pho

2011-06-07 12:42:15

Windows Pho

2013-04-16 17:02:50

Windows Pho概論

2013-04-19 16:34:56

Windows PhoWindows Pho

2013-07-30 11:18:37

Windows PhoWindows Pho

2013-11-07 17:08:39

微軟Windows StoWindows Pho

2010-04-08 17:40:23

Windows Pho

2014-02-25 09:41:20

微軟Windows Pho

2010-07-16 15:29:02

Windows Pho

2012-08-16 10:35:50

Windows Pho

2011-06-07 11:35:38

Windows Pho

2013-04-17 13:27:04

Windows PhoWindows Pho

2013-07-31 13:03:51

Windows PhoWindows Pho

2013-04-17 14:47:19

Windows PhoWindows Pho

2013-04-19 16:52:24

Windows PhoWindows Pho
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 人人做人人澡人人爽欧美 | 国产 日韩 欧美 在线 | 一区二区国产精品 | 亚洲综合一区二区三区 | 成人精品在线视频 | 91麻豆精品国产91久久久久久 | 一区二区三区观看视频 | 国产精品精品久久久 | 久久精品毛片 | 一区二区三区小视频 | 日韩在线观看中文字幕 | 亚洲精品1区 | 日韩手机在线看片 | 日韩欧美三区 | 久草欧美| 亚洲视频三区 | 国产亚洲精品久久久久动 | 99热在线播放 | 综合久久久 | 欧美成人精品一区二区三区 | 91成人在线 | 日本五月婷婷 | 国产一区不卡 | 国产精品一区在线观看 | 精品小视频 | 亚洲精品无| 国产免费福利在线 | 综合久久色| 在线色 | 亚洲免费精品 | 亚洲精品乱码久久久久久按摩观 | 卡通动漫第一页 | 国产高清在线精品一区二区三区 | 国产精品乱码一区二区三区 | 日本成人中文字幕在线观看 | 精品国产一二三区 | 97人人干| 久久亚洲视频网 | www.4hu影院| 日韩久久综合网 | 欧美激情视频一区二区三区在线播放 |