Capítulo 6: Simple efecto de FadeIn y FadeOut
Lenguaje: C# Para: VS2003 / VS2005 / VS2008 Por Dark-N: hernaldog@gmail.com ![]() http://darknromhacking.com |
![]() |
srf_cuadrado = new Surface(@"mi imagen.PNG").Convert(mi superficie, true, false); srf_cuadrado.Alpha = 0; srf_cuadrado.AlphaBlending = true; srf_cuadrado.TransparentColor = Color.White; |
/* Ejemplo usando SDL.NET 4.0 y VS 2003 con C# Muestra una figura que se aparece con el efecto "fade-in" y "fade-out" Esto se logra usando la propiedad Alpha de una Surface cargado con una imagen .PNG Alpha: es el grado de opacidad o transaparencia de una objeto, 0: no se ve el objeto y 255: se ve completamente La propiedad Alpha está definida en bytes por lo que se puede escribir en bytes (rango 0x00 a 0xFF) o en enteros (rango 0 a 255) Autor: Dark-N Fecha: 13-05-2009 */ using System; using SdlDotNet; using SdlDotNet.Sprites; using System.Drawing; namespace FadeInOut { public class FadeInOut { private static Surface srf_videoScreen; private static Surface srf_cuadrado, srf_triangulo; private static int estadoBrillo = 0; private enum enumVisibilidad : int { MasVisible = 1, MenosVisible = 2 } public static void Main() { srf_videoScreen = Video.SetVideoModeWindow(220, 200, 32); Video.WindowCaption = "Fade In y Fade Out"; Events.Fps = 25; CargaInicial(); Events.Quit += new QuitEventHandler(Evento_Salir); Events.Tick += new TickEventHandler(Evento_Tick); Events.KeyboardDown +=new KeyboardEventHandler(TecladoManejador); Events.KeyboardUp +=new KeyboardEventHandler(TecladoManejador); Events.Run(); } static void CargaInicial() { srf_cuadrado = new Surface( @"Cuadrado.PNG").Convert(srf_videoScreen, true, false); srf_cuadrado.Alpha = 0; //0-invisible, 255-completamente visible srf_cuadrado.AlphaBlending = true; srf_cuadrado.TransparentColor = Color.White; srf_triangulo = new Surface( @"Triangulo.PNG").Convert(srf_videoScreen, true, false); srf_triangulo.TransparentColor = Color.White; estadoBrillo = (int) enumVisibilidad.MasVisible; } private static void Evento_Salir(object sender, SdlDotNet.QuitEventArgs e) { Events.QuitApplication(); } private static void TecladoManejador( object sender, KeyboardEventArgs args ) { if (args.Key == Key.Escape) Events.QuitApplication(); } private static void Evento_Tick( object sender, TickEventArgs args ) { srf_videoScreen.Fill(Color.White); if (srf_cuadrado.Alpha <= 0) estadoBrillo = (int) enumVisibilidad.MasVisible; if (srf_cuadrado.Alpha >= 255) estadoBrillo = (int) enumVisibilidad.MenosVisible; if (estadoBrillo == (int) enumVisibilidad.MasVisible) srf_cuadrado.Alpha += 0x05; else srf_cuadrado.Alpha -= 0x05; srf_videoScreen.Blit(srf_cuadrado, new Point( 0, 0 )); srf_videoScreen.Blit(srf_triangulo, new Point( 20, 20 )); //el triangulo se ve por encima del cuadrado srf_videoScreen.Update(); } } } |
//Archivo: HolaMundo.cs //Autor: Dark-N //fecha: 25-05-2009 using System; using System.Collections.Generic; //para eventos y otras cosas using System.Drawing; //colores using SdlDotNet.Graphics; //para sprites y surfaces using SdlDotNet.Core; //Eventos using SdlDotNet.Input; //keyborad namespace FadeInOut { public class Figura { private static Surface srf_videoScreen; private static Surface srf_cuadrado, srf_triangulo; private static int estadoBrillo = 0; private enum enumVisibilidad : int { MasVisible = 1, MenosVisible = 2 } public static void Main() { srf_videoScreen = Video.SetVideoMode(220, 200, false, false, false, true); Video.WindowCaption = "Fade In y Fade Out"; SdlDotNet.Core.Events.Fps = 25; //25 veces se llamará el tick por segundo CargaInicial(); SdlDotNet.Core.Events.KeyboardDown += new EventHandler < KeyboardEventArgs >(Evento_Teclado); SdlDotNet.Core.Events.Tick += new EventHandler < TickEventArgs >(Evento_Tick); SdlDotNet.Core.Events.Quit += new EventHandler < QuitEventArgs >(Evento_Salir); Events.Run(); } static void CargaInicial() { srf_cuadrado = new Surface(@"Cuadrado.PNG").Convert(srf_videoScreen, true, false); srf_cuadrado.Alpha = 0; //0-invisible, 255-completamente visible srf_cuadrado.AlphaBlending = true; srf_cuadrado.TransparentColor = Color.White; srf_triangulo = new Surface(@"Triangulo.PNG").Convert(srf_videoScreen, true, false); srf_triangulo.Transparent = true; srf_triangulo.TransparentColor = Color.White; estadoBrillo = (int)enumVisibilidad.MasVisible; } private static void Evento_Salir(object sender, QuitEventArgs e) { Events.QuitApplication(); } private static void Evento_Teclado(object sender, KeyboardEventArgs e) { if (e.Key == Key.Escape) Events.QuitApplication(); } private static void Evento_Tick(object sender, TickEventArgs args) { srf_videoScreen.Fill(Color.White); if (srf_cuadrado.Alpha <= 0) estadoBrillo = (int)enumVisibilidad.MasVisible; if (srf_cuadrado.Alpha >= 255) estadoBrillo = (int)enumVisibilidad.MenosVisible; if (estadoBrillo == (int)enumVisibilidad.MasVisible) srf_cuadrado.Alpha += 0x05; else srf_cuadrado.Alpha -= 0x05; srf_videoScreen.Blit(srf_cuadrado, new Point(0, 0)); srf_videoScreen.Blit(srf_triangulo, new Point(20, 20)); //el triangulo se ve por encima del cuadrado srf_videoScreen.Update(); } } } |