none
Como Criar um Controle Deslizante de Volume para o objeto MediaElement no Silverlight 2.0

    Question

  • Olá pessoal gostaria de saber como criar um controle deslizante de volume para o controle MediaElement do Silverlight 2.0 feito no VS2008...estou fazendo ele em Csharp alguem teria um artigo, video ou algo assim que ensina-se como fazer esse tipo de controle deslizante de volume

    Fico no aguardo e desde já agradeço
    LADEF
    Friday, August 21, 2009 2:55 AM

Answers

  • Olá.

    O que seria o controle deslizante? Acredito que seja o slider (estilo o volume do MediaPlayer), estou correto? Se sim, o código que te passei funciona. Segue um exemplo que fiz com o volume controlado pelo slider e pelos botões.

    .xaml

    <Grid x:Name="LayoutRoot" Background="White">
            <MediaElement x:Name="meVideo" Volume="0.5" Width="400" Height="270" VerticalAlignment="Top" HorizontalAlignment="Center" AutoPlay="True" />
            <StackPanel VerticalAlignment="Bottom" Orientation="Horizontal" HorizontalAlignment="Center">
                <Button x:Name="btnDiminui" Width="20" Height="20" Content="-" Click="btnDiminui_Click" />
                <Slider x:Name="sldVolume" Width="200" Margin="30,0,30,0" Maximum="1" Minimum="0" Value="0.5" ValueChanged="sldVolume_ValueChanged" />
                <Button x:Name="btnAumenta" Width="20" Height="20" Content="+" Click="btnAumenta_Click" />
            </StackPanel>
        </Grid>

    .cs

    public Page()
            {
                InitializeComponent();
                Loaded += new RoutedEventHandler(Page_Loaded);
            }
    
            void Page_Loaded(object sender, RoutedEventArgs e)
            {
                meVideo.Source = new Uri(Application.Current.Host.Source, "../Seuvideo.wmv");
            }
    
            private void btnDiminui_Click(object sender, RoutedEventArgs e)
            {
                meVideo.Volume = meVideo.Volume * 0.9;
                sldVolume.Value = sldVolume.Value * 0.9;
            }
    
            private void btnAumenta_Click(object sender, RoutedEventArgs e)
            {
                meVideo.Volume = meVideo.Volume * 1.1;
                sldVolume.Value = sldVolume.Value * 1.1;
            }
    
            private void sldVolume_ValueChanged(object sender, RoutedEventArgs e)
            {
                if (sldVolume != null)
                {
                    meVideo.Volume = sldVolume.Value;
                }
            }
    Abraço.

    "Se sua pergunta foi respondida, por favor, marque como resposta."
    • Marked as answer by LuizIta Tuesday, September 01, 2009 12:38 AM
    Monday, August 24, 2009 4:35 PM
    Moderator

All replies

  • Achei esta solução na Web. Veja se atende sua necessidade:

    <Slider Height="23" Margin="60,96,123,0" x:Name="volumeCtrl" VerticalAlignment="Top" LargeChange="0.1" Maximum="1" Value="0.5" ValueChanged="volumeCtrl_ValueChanged"/>
    
    <MediaElement Height="30" HorizontalAlignment="Left" Margin="80,0,0,59" x:Name="musicplayer" VerticalAlignment="Bottom" Width="77"/>
    


    cs:

    private void volumeCtrl_ValueChanged(object sender, RoutedEventArgs e) 
    {
    
    if (volumeCtrl != null)
                {
                    musicplayer.Volume = volumeCtrl.Value;
                }
    
    }
    

    Abraço.

    "Se sua pergunta foi respondida, por favor, marque como resposta."

    Friday, August 21, 2009 1:42 PM
    Moderator
  • O Contrôle á sêr usado tem que sêr o controle deslizante mesmo e ele serve para media element com video?

    E no caso como daria para adaptar com botão + e outro botão - volume na aplicação

    Fico no aguardo e desde já agradeço


    LADEF
    Friday, August 21, 2009 6:34 PM
  • Olá.

    O que seria o controle deslizante? Acredito que seja o slider (estilo o volume do MediaPlayer), estou correto? Se sim, o código que te passei funciona. Segue um exemplo que fiz com o volume controlado pelo slider e pelos botões.

    .xaml

    <Grid x:Name="LayoutRoot" Background="White">
            <MediaElement x:Name="meVideo" Volume="0.5" Width="400" Height="270" VerticalAlignment="Top" HorizontalAlignment="Center" AutoPlay="True" />
            <StackPanel VerticalAlignment="Bottom" Orientation="Horizontal" HorizontalAlignment="Center">
                <Button x:Name="btnDiminui" Width="20" Height="20" Content="-" Click="btnDiminui_Click" />
                <Slider x:Name="sldVolume" Width="200" Margin="30,0,30,0" Maximum="1" Minimum="0" Value="0.5" ValueChanged="sldVolume_ValueChanged" />
                <Button x:Name="btnAumenta" Width="20" Height="20" Content="+" Click="btnAumenta_Click" />
            </StackPanel>
        </Grid>

    .cs

    public Page()
            {
                InitializeComponent();
                Loaded += new RoutedEventHandler(Page_Loaded);
            }
    
            void Page_Loaded(object sender, RoutedEventArgs e)
            {
                meVideo.Source = new Uri(Application.Current.Host.Source, "../Seuvideo.wmv");
            }
    
            private void btnDiminui_Click(object sender, RoutedEventArgs e)
            {
                meVideo.Volume = meVideo.Volume * 0.9;
                sldVolume.Value = sldVolume.Value * 0.9;
            }
    
            private void btnAumenta_Click(object sender, RoutedEventArgs e)
            {
                meVideo.Volume = meVideo.Volume * 1.1;
                sldVolume.Value = sldVolume.Value * 1.1;
            }
    
            private void sldVolume_ValueChanged(object sender, RoutedEventArgs e)
            {
                if (sldVolume != null)
                {
                    meVideo.Volume = sldVolume.Value;
                }
            }
    Abraço.

    "Se sua pergunta foi respondida, por favor, marque como resposta."
    • Marked as answer by LuizIta Tuesday, September 01, 2009 12:38 AM
    Monday, August 24, 2009 4:35 PM
    Moderator