글 작성자: 써니루루

자료제공 : http://hugeflow.com/

예제소스 :


Silverlight - media player

Silverlight MediaControl


Silverlight 에서는 정말 쉽게 미디어 플레이어를 만들 수 있는 것 같다.

먼저 silverlight 프로젝트를 하나 만들고, Page.xaml을 blend로 열어준다.

blend에서 asset에 MediaControl 하나를 올려주고 버튼들을 올려 간단히 media 재생에 대한 내용을 작성해보자.


먼저 xaml

<UserControl x:Class="WebClientMediaTest.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="478" d:DesignHeight="337">
    <Grid x:Name="LayoutRoot" Background="White">
     <MediaElement Margin="0.39,0,-0.39,37" Source="http://hugeflow.com/Metro/Video/pigmap.wmv" x:Name="media"/>
     <StackPanel Height="33" Margin="0.39,0,0,0" VerticalAlignment="Bottom" Orientation="Horizontal">
      <Button Content="Play" Width="82.333" x:Name="btnPlay" Click="btnPlay_Click"/>
      <Button Content="Pause" Width="82.333" x:Name="btnPause" Click="btnPause_Click"/>
      <Button Content="Stop" Width="82.333" x:Name="btnStop" Click="btnStop_Click"/>
      <Slider Width="216" x:Name="slideVolume" ValueChanged="slideVolume_ValueChanged"/>
     </StackPanel>
    </Grid>
</UserControl>




다음은 C# 코드

using System.Windows;
using System.Windows.Controls;

namespace WebClientMediaTest
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();

            Loaded += new RoutedEventHandler(Page_Loaded);
        }

        void Page_Loaded(object sender, RoutedEventArgs e)
        {
            slideVolume.Value = slideVolume.Maximum * media.Volume;
        }

        private void btnPlay_Click(object sender, RoutedEventArgs e)
        {
            media.Play();
        }

        private void btnPause_Click(object sender, RoutedEventArgs e)
        {
            media.Pause();
        }

        private void btnStop_Click(object sender, RoutedEventArgs e)
        {
            media.Stop();
        }

        private void slideVolume_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            media.Volume = slideVolume.Value / slideVolume.Maximum;
        }
    }
}


다른 코드들 보다 어쩌먼 정말 간단한 코드같다 -_ -;;

별다른 기법도 없고, 단지 컨트롤 에서 제공하는 간단한 산수만 한다면 사용할 수 있는..