viernes, 23 de marzo de 2007

Mostrar Reflejo de un Vídeo con WPF


En este ejemplo reproduciremos un video y mostraremos su reflejo. Es un ejemplo muy simple que utiliza el mismo codigo para reflejar una imagen.

Código XAML


<Window
x:Class="VideoReflejo"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="VideoReflejo"
Height="438"
Width="399"
WindowStartupLocation="CenterScreen"
>
<
Grid>

<
StackPanel

Margin="0,15,0,0" HorizontalAlignment="Center" Width="195" VerticalAlignment="Center">
<
Border
BorderBrush="White" BorderThickness="5" HorizontalAlignment="Center" VerticalAlignment="Center">
<!--
Para poder hacer que el
video tenga una desviacion de 10º
-->

<
Border.RenderTransform>

<
SkewTransform
CenterX="0" CenterY="0" AngleX="0" AngleY="10"/>
</
Border.RenderTransform>

<!--
Visor multimedia para la
celda superior
-->

<
MediaElement x:Name="ReproductorVideo"
Grid.Row="0" Grid.Column="0" Source="Trailers\Pelicula" Volume="0" LoadedBehavior="Play" Width="150" Height="150"/>
</
Border>

<
Border
Width="145" Height="175" BorderBrush="White" BorderThickness="1">
<!--
Hacemos que el video se
desvie 10º el angulo y. Pero tambien desviaremos el angulo x
para que no salga recta la imagen
-->

<
Border.RenderTransform>

<
SkewTransform
CenterX="0" CenterY="0" AngleX="170" AngleY="10"/>
</
Border.RenderTransform>

<!--
Para poder hacer el
reflejo asociamos el VisualBrush con el video
-->

<
Border.Background>

<
VisualBrush
Visual="{Binding
ElementName=ReproductorVideo}
">

<
VisualBrush.Transform>

<
ScaleTransform
ScaleX="1" ScaleY="-1" CenterX="190" CenterY="75"></ScaleTransform>
</
VisualBrush.Transform>

</
VisualBrush>

</
Border.Background>

<!--
Para que sea opaco el
reflejo
-->

<
Border.OpacityMask>

<
LinearGradientBrush
StartPoint="0,0" EndPoint="0,1">
<
GradientStop
Offset="0" Color="Black"></GradientStop>
<
GradientStop
Offset="0.6" Color="Transparent"></GradientStop>
</
LinearGradientBrush>

</
Border.OpacityMask>

</
Border>

</
StackPanel>

</
Grid>

</Window>

No hay comentarios: