Posteado por: elmanu | Agosto 30, 2007

Mejorando la apariencia del mdCollage

Pues eso, que he modificado el código que genera el collage y lo he puesto en una clase.

 

collage.jpg

[Última version]

[Primera version]

Acontinuacion dejo la clase que genera todo esto y como se puede utilizar en un form.

 

   1:  Public NotInheritable Class collage
   2:      'La lista de imagenes que dibujaremos
   3:      Private mListaImagenes() As String
   4:      'La imagen que regresamos (collage)
   5:      Private imgLienzo As Bitmap
   6:      Private mTamano As Size
   7:      Public Sub New(ByVal listaImagenes() As String, ByVal tamano As Size)
   8:          mListaImagenes = listaImagenes
   9:          mTamano = tamano
  10:      End Sub
  11:      ''' <summary>
  12:      ''' Crea el efecto de un collage con imagenes en miniatura
  13:      ''' </summary>
  14:      ''' <returns>Regresa una imagen con las imagenes en miniatura pasadas en el constructor</returns>
  15:      ''' <remarks></remarks>
  16:      Public Function getCollage() As Bitmap
  17:          'Creamos un bmp para dibujar en el
  18:          imgLienzo = New Bitmap(Me.mTamano.Width, Me.mTamano.Height)
  19:          'Creamos a partir del bmp un graphics
  20:          Dim g As Graphics = Graphics.FromImage(imgLienzo)
  21:          'Movemos el origen al centro, esta en la esquina superior izquierda
  22:          g.TranslateTransform(Me.mTamano.Width  2, Me.mTamano.Height  2)
  23:          For i As Integer = 0 To mListaImagenes.Length - 1
  24:              Randomize()
  25:              Application.DoEvents()
  26:              g.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
  27:              g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
  28:              'Creamos una imagen en miniatura
  29:              Dim img As New Bitmap(Image.FromFile(mListaImagenes(i)), 100, 100)
  30:              'Movemos el x e y 
  31:              Dim x As Integer = CInt(Rnd() * 200)
  32:              Dim y As Integer = CInt(Rnd() * 200)
  33:              'Creamos el rectangulo blanco
  34:              g.FillRectangle(Brushes.White, x - 10, y - 10, img.Width + 20, img.Height + 50)
  35:              'Ponemos el nombre de la imagen
  36:              g.DrawString(IO.Path.GetFileNameWithoutExtension(mListaImagenes(i)), New Font("Calibri", 11), Brushes.Black, x, y + 100)
  37:              'Ponemos la imagen
  38:              g.DrawImage(img, x, y)
  39:              'rotamos
  40:              g.RotateTransform(Rnd() * 360)
  41:          Next
  42:          Return imgLienzo
  43:      End Function
  44:  End Class

Como la clase regresa un Bitmap solo asignamos la propiedad backGroundImage de un form al metodo de la instancia de la clase collage.

Saludos Manu


Dejar una respuesta

Tienes que iniciar sesión para escribir un comentario.

Categorías