WPF 07 - gráficos, animación y multimedia

54
Gráficos, Animación y Multimedia DANAE AGUILAR GUZMÁN MCT, MCP, MCTS [email protected]

Transcript of WPF 07 - gráficos, animación y multimedia

Page 1: WPF 07 - gráficos, animación y multimedia

Gráficos, Animación y Multimedia D A N A E A G U I L A R G U Z M Á N

M C T , M C P , M C T S

D A N A E A G U I L A R @ G M A I L . C O M

Page 2: WPF 07 - gráficos, animación y multimedia

Contenido del Módulo Lección 1. Creación y visualización de gráficos

Lección 2. Animación

Lección 3. Agregando contenido multimedia en WPF

Page 3: WPF 07 - gráficos, animación y multimedia

Lección 1. Creación y visualización de gráficos

1. Pinceles y lápices

2. Dibujando formas

3. Transformaciones

4. Efectos

Page 4: WPF 07 - gráficos, animación y multimedia

1. Pinceles y lápices

Page 5: WPF 07 - gráficos, animación y multimedia

1. Pinceles y lápices

SolidColorBrush.

<Rectangle Fill="Red" Width="150" Height="150" />

Page 6: WPF 07 - gráficos, animación y multimedia

<Rectangle Width="150" Height="150"> <Rectangle.Fill> <LinearGradientBrush StartPoint="0,1" EndPoint="1,1"> <GradientStop Color="Yellow" Offset="0.0" /> <GradientStop Color="Orange" Offset="0.5" /> <GradientStop Color="Red" Offset="1.0" /> </LinearGradientBrush> </Rectangle.Fill> </Rectangle>

1. Pinceles y lápices LinearGradientBrush.

Page 7: WPF 07 - gráficos, animación y multimedia

1. Pinceles y lápices Dirección del gradiente en LinearGradientBrush.

Page 8: WPF 07 - gráficos, animación y multimedia

1. Pinceles y lápices Propiedad Spread de LinearGradientBrush.

Valor de Spread

Descripción

Pad Es el valor por defecto, usa el color sólido de los extremos del gradiente.

Reflect Hace que el gradiente se extienda de manera inversa (como el reflejo en un espejo)

Repeat Hace que el gradiente se repita en la misma dirección.

Page 9: WPF 07 - gráficos, animación y multimedia

<Rectangle Width="150" Height="150"> <Rectangle.Fill> <RadialGradientBrush GradientOrigin="0.75,0.25"> <GradientStop Color="Yellow" Offset="0.0" /> <GradientStop Color="Orange" Offset="0.5" /> <GradientStop Color="Red" Offset="1.0" /> </RadialGradientBrush> </Rectangle.Fill> </Rectangle>

1. Pinceles y lápices RadialGradientBrush.

Page 10: WPF 07 - gráficos, animación y multimedia

1. Pinceles y lápices ImageBrush.

<Grid.Background> <ImageBrush ImageSource="icono.png" Stretch="Fill" Viewport="0,0,.5,.5" TileMode="FlipXY" > </ImageBrush> </Grid.Background>

Page 11: WPF 07 - gráficos, animación y multimedia

1. Pinceles y lápices VisualBrush.

<Rectangle Width="350" Height="250"> <Rectangle.Fill> <VisualBrush Viewport="0,0.5,0.5,0.15" TileMode="Tile" Stretch="Uniform"> <VisualBrush.Visual> <StackPanel Background="Yellow" Orientation="Horizontal"> <Button>Aceptar</Button> <Button>Cancelar</Button> </StackPanel> </VisualBrush.Visual> </VisualBrush> </Rectangle.Fill> </Rectangle>

Page 12: WPF 07 - gráficos, animación y multimedia

1. Pinceles y lápices Lápices.

Flat

Square

Round

Triangle

Bevel

Round

Miter

Miter Limit = 3

Page 13: WPF 07 - gráficos, animación y multimedia

1. Pinceles y lápices Lápices.

Page 14: WPF 07 - gráficos, animación y multimedia

2. Dibujando formas

Page 15: WPF 07 - gráficos, animación y multimedia

2. Dibujando formas Rectángulo.

<Rectangle Width="100" Height="60" Stroke="Green" Fill="LightGreen"/>

<Rectangle Width="100" Height="60" Stroke="Green" Fill="LightGreen" RadiusX="10" RadiusY="10"/>

Page 16: WPF 07 - gráficos, animación y multimedia

2. Dibujando formas Elipse.

<Ellipse Width="100" Height="60" Stroke="Maroon" Fill="Tomato"/>

Page 17: WPF 07 - gráficos, animación y multimedia

2. Dibujando formas Línea.

Poli Línea

<Line X1="20" Y1="20" X2="100" Y2="80" Stroke="Blue"/>

<Polyline Stroke="Red" Points="100, 100 200, 200 200, 100 300, 200 300, 100"/>

Page 18: WPF 07 - gráficos, animación y multimedia

2. Dibujando formas Polígonos.

<Viewbox Width="150" Height="150"> <Polygon Points="10,40 32,40 40,10 48,40 70,40 53,53 60,80 40,65 20,80 27,53" Fill="Gold" Stroke="DarkGoldenrod"/> </Viewbox>

Page 19: WPF 07 - gráficos, animación y multimedia

2. Dibujando formas Paths.

◦ CombinedGeometry ◦ EllipseGeometry ◦ GeometryGroup ◦ LineGeometry ◦ PathGeometry ◦ RectangleGeometry ◦ StreamGeometry

<Path Fill="LightCoral"> <Path.Data> <EllipseGeometry RadiusX="40" RadiusY="50"/> </Path.Data> </Path>

Page 20: WPF 07 - gráficos, animación y multimedia

2. Dibujando formas GeometryGroup

<Path Fill="LightSkyBlue" Margin="70,70"> <Path.Data> <GeometryGroup FillRule="Nonzero"> <EllipseGeometry RadiusX="50" RadiusY="50"/> <RectangleGeometry Rect="0,0,50,100"/> </GeometryGroup> </Path.Data> </Path>

Page 21: WPF 07 - gráficos, animación y multimedia

2. Dibujando formas CombinedGeometry

<Path Fill="Lime" Margin="70,70"> <Path.Data> <CombinedGeometry GeometryCombineMode="Exclude"> <CombinedGeometry.Geometry1> <EllipseGeometry RadiusX="40" RadiusY="50"/> </CombinedGeometry.Geometry1> <CombinedGeometry.Geometry2> <RectangleGeometry Rect="0,0,20,100"/> </CombinedGeometry.Geometry2> </CombinedGeometry> </Path.Data> </Path>

Page 22: WPF 07 - gráficos, animación y multimedia

3. Transformaciones TranslateTransform

<Grid> <Image Source="Penguins.jpg" Height="200"> <Image.RenderTransform> <TranslateTransform X="50" Y="100"/> </Image.RenderTransform> </Image> </Grid>

Page 23: WPF 07 - gráficos, animación y multimedia

3. Transformaciones RotateTransform

<Image Source="Penguins.jpg" Height="200"> <Image.RenderTransform> <RotateTransform Angle="45"/> </Image.RenderTransform> </Image>

Page 24: WPF 07 - gráficos, animación y multimedia

3. Transformaciones ScaleTransform

Flipping: • ScaleX="-1"

• ScaleY="-1"

<Image Source="Penguins.jpg" Height="200"> <Image.RenderTransform> <ScaleTransform ScaleY="3"/> </Image.RenderTransform> </Image>

Page 25: WPF 07 - gráficos, animación y multimedia

3. Transformaciones SkewTransform

<Grid VerticalAlignment="Top"> <Image Source="Penguins.jpg" Height="100"> <Image.RenderTransform> <SkewTransform AngleY="45"/> </Image.RenderTransform> </Image> </Grid>

Page 26: WPF 07 - gráficos, animación y multimedia

3. Transformaciones TransformGroup

<Image Source="Penguins.jpg" Height="100"> <Image.RenderTransform> <TransformGroup> <RotateTransform Angle="45"/> <SkewTransform AngleY="45"/> </TransformGroup> </Image.RenderTransform> </Image>

Page 27: WPF 07 - gráficos, animación y multimedia

3. Transformaciones Clipping

<Button Height="100" Width="100" Name="Button1"> <Button.Clip> <EllipseGeometry Center="50,50" RadiusX="50" RadiusY="30"/> </Button.Clip> <Button.Content> Boton </Button.Content> </Button>

Page 28: WPF 07 - gráficos, animación y multimedia

4. Efectos BlurEffect y DropShadowEffect.

<Border> <Border.Effect> <BlurEffect /> </Border.Effect> <Button Width="100" Height="50" Content="Aceptar"> <Button.Effect> <DropShadowEffect Color="Green" BlurRadius="10" /> </Button.Effect> </Button> </Border>

Page 29: WPF 07 - gráficos, animación y multimedia

Lección 2. Animación 1. Fundamentos de Animación

2. Storyboards

3. Líneas de tiempo

4. Animación Double

5. Animación de Color

6. Animación de Puntos

7. Animaciones con KeyFrames

8. Animaciones desde C#

Page 30: WPF 07 - gráficos, animación y multimedia

1. Fundamentos de Animación 1. Es modificar el valor de una propiedad de dependencia en un

intervalo de tiempo.

2. Usar una clase de animación correspondiente al tipo de la propiedad: DoubleAnimation

PointAnimation

StringAnimationUsingKeyFrames

Etc… (en System.Windows.Animation namespace)

Page 31: WPF 07 - gráficos, animación y multimedia

1. Fundamentos de Animación 3. Hay 3 tipos de animación:

1. Transición interpolada: DoubleAnimation

ColorAnimation

PointAnimation

Etc…

2. Transición abrupta (Key Frames): ◦ DoubleAnimationUsingKeyFrames

◦ ColorAnimationUsingKeyFrames

◦ StringAnimationUsingKeyFramesEtc…

3. Basadas en Paths (Path Based Animations) ◦ DoubleAnimationUsingPath

◦ PointAnimationUsingPath

◦ Etc…

Page 32: WPF 07 - gráficos, animación y multimedia

2. Storyboards Creando un StoryBoard:

* Usando Attached Properties:

<Storyboard TargetName="Button1" TargetProperty="Height"> <DoubleAnimation Duration="0:0:10" From="1" To="200" /> </Storyboard>

<Storyboard> <DoubleAnimation Duration="0:0:10" From="1" To="200" Storyboard.TargetName="Button1" Storyboard.TargetProperty="Height" /> </Storyboard>

Page 33: WPF 07 - gráficos, animación y multimedia

2. Storyboards Iniciando la animación con EventTrigger:

EventTrigger: ◦ En un Style

◦ O en la colección Triggers de cualquier elemento.

<EventTrigger RoutedEvent="Button.Click"> <EventTrigger.Actions> ... </EventTrigger.Actions> </EventTrigger>

Page 34: WPF 07 - gráficos, animación y multimedia

2. Storyboards Acciones de StoryBoard:

BeginStoryboard

PauseStoryboard

ResumeStoryboard

SeekStoryboard

SetStoryboardSpeedRatio

SkipStoryboardToFill

StopStoryboard

Page 35: WPF 07 - gráficos, animación y multimedia

2. Storyboards <Button Width="80" Height="30" Content="Hacer Click!"> <Button.Triggers> <EventTrigger RoutedEvent="Button.Click"> <EventTrigger.Actions> <BeginStoryboard> <Storyboard> <DoubleAnimation To="200" Duration="0:0:3" Storyboard.TargetProperty="Width"/> </Storyboard> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> </Button.Triggers> </Button>

Page 36: WPF 07 - gráficos, animación y multimedia

2. Storyboards Iniciando la animación con otro tipo de Triggers: (Trigger, MultiTrigger, DataTrigger, y MultiDataTrigger)

Tienen las colecciones EnterActions y ExitActions

<Trigger Property="IsMouseOver" Value="True"> <Trigger.EnterActions> <BeginStoryboard Name="stb1"> <Storyboard> <DoubleAnimation To="20" Duration="0:0:.5" Storyboard.TargetProperty="FontSize" /> </Storyboard> </BeginStoryboard> </Trigger.EnterActions> <Trigger.ExitActions> <StopStoryboard BeginStoryboardName="stb1" /> </Trigger.ExitActions> </Trigger>

Page 37: WPF 07 - gráficos, animación y multimedia

3. Líneas de tiempo

Page 38: WPF 07 - gráficos, animación y multimedia

3. Líneas de tiempo

Propiedad Descripción

BeginTime Agrega un tiempo de retardo antes de que la animación comience. Útil para sincronizar el inicio de varias animaciones.

Duration La duración de la animación de inicio a fin.

SpeedRatio Aumenta (mayor a 1) o reduce (menor a 1) la velocidad de la animación. Normalmente es 1. Ej: 0.5 tomará el doble de tiempo.

AccelerationRatio y DecelerationRatio

Hace que la velocidad de la animación no sea lineal. El total de ambos valores no puede ser mayor a 1.

Propiedades de la líneas de tiempo

Page 39: WPF 07 - gráficos, animación y multimedia

3. Líneas de tiempo

Propiedad Descripción

AutoReverse Con el valor True hará que la animación corra en reversa una vez que termine y así regrese a su valor inicial.

FillBehavior Que sucede cuando termina la animación. Mantiene su valor final (HoldEnd), o usa el valor inicial (Stop)

RepeatBehavior Repetir la animación un nuero de veces por un intervalo de tiempo o repetir para siempre (Forever)

Propiedades de la líneas de tiempo

Page 40: WPF 07 - gráficos, animación y multimedia

4. Animación Double DoubleAnimation

<Storyboard> <DoubleAnimation Storyboard.TargetProperty="Width" To="200" Duration="0:0:3"/> </Storyboard>

Page 41: WPF 07 - gráficos, animación y multimedia

5. Animación de Color ColorAnimation

<Storyboard> <ColorAnimation Storyboard.TargetName="miBrush" Storyboard.TargetProperty="Color" From="Red" To="Yellow" Duration="0:0:5" /> </Storyboard>

Page 42: WPF 07 - gráficos, animación y multimedia

6. Animación de Puntos PointAnimation

<Storyboard> <PointAnimation Storyboard.TargetName="miElipse" Storyboard.TargetProperty="Fill.GradientOrigin" From="0.7,0.3" To="0.3,0.7" Duration="0:0:10" AutoReverse="True" RepeatBehavior="Forever"/> </Storyboard>

Page 43: WPF 07 - gráficos, animación y multimedia

7. Animaciones con KeyFrames 1. KeyFrames Lineales:

<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Height"> <LinearDoubleKeyFrame Value="10" KeyTime="0:0:1" /> <LinearDoubleKeyFrame Value="100" KeyTime="0:0:2" /> <LinearDoubleKeyFrame Value="30" KeyTime="0:0:4"/> </DoubleAnimationUsingKeyFrames>

Page 44: WPF 07 - gráficos, animación y multimedia

7. Animaciones con KeyFrames 2. KeyFrames Discretos:

3. KeyFrames Spline:

<StringAnimationUsingKeyFrames Storyboard.TargetProperty="Content"> <DiscreteStringKeyFrame Value="Hola" KeyTime="0:0:0" /> <DiscreteStringKeyFrame Value="Cola" KeyTime="0:0:1" /> <DiscreteStringKeyFrame Value="Cala" KeyTime="0:0:2" /> <DiscreteStringKeyFrame Value="Casa" KeyTime="0:0:3" /> <DiscreteStringKeyFrame Value="Casi" KeyTime="0:0:4" /> </StringAnimationUsingKeyFrames>

<SplineDoubleKeyFrame Value="300" KeyTime="0:0:6" KeySpline="0.1,0.8 0.6,0.6" />

Page 45: WPF 07 - gráficos, animación y multimedia

8. Animaciones desde C# 1. Creando una animación:

var animacion = new System.Windows.Media.Animation.DoubleAnimation(); animacion.From = 20; animacion.To = 300; animacion.Duration = new Duration(new TimeSpan(0, 0, 5)); animacion.FillBehavior = FillBehavior.Stop;

Page 46: WPF 07 - gráficos, animación y multimedia

8. Animaciones desde C# 2. Iniciando la animación:

button1.BeginAnimation( Button.HeightProperty, animacion);

Page 47: WPF 07 - gráficos, animación y multimedia

Lección 3. Agregando contenido multimedia en WPF

1. Usando el Sound Player

2. Media Player y Media Element

Page 48: WPF 07 - gráficos, animación y multimedia

1. Usando el Sound Player 1. Liviano y fácil de usar.

2. Solo reproduce .wav files descomprimidos.

3. No hay control de volumen, balance, velocidad.

4. No se puede pausar.

Page 49: WPF 07 - gráficos, animación y multimedia

1. Usando el Sound Player 1. En C#:

var miPlayer = new System.Media.SoundPlayer(); miPlayer.SoundLocation = "C:\\audio.wav"; miPlayer.Load(); // miPlayer.LoadAsync(); miPlayer.Play(); // miPlayer.PlaySync();

Page 50: WPF 07 - gráficos, animación y multimedia

1. Usando el Sound Player 2. En XAML:

<Button Height="30" Width="80" Content="Hacer Click!"> <Button.Style> <Style> <Style.Triggers> <EventTrigger RoutedEvent="Button.MouseEnter"> <SoundPlayerAction Source="C:\audio.wav"/> </EventTrigger> </Style.Triggers> </Style> </Button.Style> </Button>

Page 51: WPF 07 - gráficos, animación y multimedia

2. MediaPlayer y MediaElement MediaPlayer y MediaElement:

1. Mayor soporte para reproducción de audio y video

2. Soportan varios formatos.

3. Usan del Windows Media Player 10 o +

4. Permiten Pausar, controlar volumen, velocidad, etc.

Page 52: WPF 07 - gráficos, animación y multimedia

2. MediaPlayer y MediaElement Diferencias:

1. MediaPlayer carga audio y video pero no tiene una representación visual (no muestra el video por si mismo)

2. MediaElement envuelve al MediaPlayer dándole una representación visual

3. MediaPlayer no es fácilmente usado en XAML, pero MediaElement si.

Page 53: WPF 07 - gráficos, animación y multimedia

2. Media Player y Media Element 1. MediaPlayer, en C#:

var miPlayer = new System.Windows.Media.MediaPlayer(); miPlayer.Open(new Uri("mp3Audio.mp3")); miPlayer.Play();

Page 54: WPF 07 - gráficos, animación y multimedia

2. Media Player y Media Element

2. MediaElement:

Declarado en XAML:

Iniciado desde C#:

<MediaElement Source="video.mp4" LoadedBehavior="Manual" Name="mediaElement1"/>

mediaElement1.Play();