jueves, 2 de agosto de 2012

Jugando con memes

Hola a todos, toda la tarde estuve viendo varios chistes de Bad Luck Brian ... todo un personaje y bueno estos memes siempre andan sacandome risas y risas ... asi que decidi hacer una aplicación que básicamente solo pone el texto sobre una imagen ... asi podrán hacer sus propios chistes de este pobre sujeto o de otros :P 

Pues bien, ahora les explico como funciona, al ser una aplicación simple y bien hecha a la rápida toda la lógica esta en el formulario principal queria utilizar WPF ... pero bueno :\ tienen que formatear el texto a mano ... es decir ponerlo al centro, darle los saltos de linea, etc. además que se tiene la opción de elegir el tamaño de la fuente, este es un pantallazo de como luce la aplicación: 




Ahora un poco a lo técnico, utilice algunas clases de System.Drawing.Drawing2D como la clase GraphicsPath que básicamente en este caso genera un path a partir de las cadenas que nosotros le enviamos, luego obtenemos el Graphics del PictureBox que esta mostrando la imagen a la cual queremos adicionar el texto, luego pinta primeramente los bordes negros de las letras luego el relleno blanco.


   using (Graphics g = Graphics.FromImage(img)) {
      g.SmoothingMode = SmoothingMode.AntiAlias;
      g.InterpolationMode = InterpolationMode.HighQualityBicubic;
   
      FontFamily fontFamily = new FontFamily("Arial Black");
      // Defino un path en base a un string
      GraphicsPath path = new GraphicsPath();
      path.AddString(texto, fontFamily, (int)FontStyle.Regular, fontSize, new Point(posX, posY), new StringFormat());
      // Pen para dibujar los bordes negros
      Pen borderPen = new Pen(Color.FromArgb(0x0, 0x0, 0x0), 4.5f);
      g.DrawPath(borderPen, path);
      // Brush para dibujar el fondo blanco
      SolidBrush fillBrush = new SolidBrush(Color.FromArgb(0xff, 0xff, 0xff));
      g.FillPath(fillBrush, path);
   
      imgMeme.Image = img;
   }


Ven que utilizamos posX y posY que son para definir las posiciones de donde se dibujará la cadena, esto mas que todo para el texto superior e inferior que estos chistes suelen tener XD. Ven que utilizamos posX y posY que son para definir las posiciones de donde se dibujará la cadena, esto mas que todo para el texto superior e inferior que estos chistes suelen tener XD. 

Bueno, el proyecto puede ser abierto con Visual Studio 2010, pero esta compilado bajo el framework 2.0, y aca esta el source, espero les sepa de utilidad y para crear sus chistes ... a pesar de que hay varias de estas apps en la web, pero bueno ... tal vez para mostrar como se podrian hacer :), ya no tengo con mas aburrirlos pues me despido.

El ejecutable lo tienen aca.

 Saludos

2 comentarios:

  1. Al momento de guardar, ustedes le tiene que dar la extensión de la imagen :P

    ResponderEliminar
  2. como utilizo el evento Tick del timer??? tengo un picture box y quiero que cambie de imagen cada 5000 ms

    ResponderEliminar