Sandro Bizioli


Chi sogna di giorno conosce molte cose che sfuggono a chi sogna soltanto di notte. (E.A.Poe)
Mappa

Unire due immagini in VB.Net

Attraverso questa funzione sarà possibile "unire" due immagini tra di loro generando un nuovo oggetto System.Drawing.Image le cui dimensioni saranno la somma di quelle delle due immagini di partenza.
Il NameSpace utilizzato è, ovviamente, il consueto System.Drawing.
Per rendere più flessibile la funzione ho definito un Enum ImagePosizion che indica la posizione del secondo oggetto Image rispetto al primo.

Private Enum ImagePosition As Integer
Top = 0
Left = 1
Right = 2
Botton = 3
End Enum

Private Function CombineImages(ByVal Pic1 As Image, ByVal Pic2 As Image, Optional ByVal Dove As ImagePosition = ImagePosition.Top) As Image
'***********************************************************************************
' Func.: CombineImages (Creazione Sandro Bizioli-01/09/2007; Mod.: )
' Desc.: Date due immagini se ne ottiene una nuova data dalla somma delle precedenti
' Par. : Pic1 System.Drawing.Size prima immagine da unire
' Pic2 System.Drawing.Size sconda immagine da unire
' [Dove] Opzionale. Serve per specificare la posizione di Pic2 rispetto a Pic1.
' Il valore di default è ImagePosizion.Top = 0
' Ret. : System.Drawing.Image
'***********************************************************************************
Dim Wide As Integer = Pic1.Size.Width
Dim High As Integer = Pic1.Size.Height
'
' Verifico che la nuova immagine sia abbastanza grande da contenere
' le due d'origine
'
If Pic1.Height >= pic2.Height Then
  High = Pic1.Size.Height
Else
  High = pic2.Size.Height
End If
'
' Compongo le nuove dimensioni
'
Select Case Dove
  Case ImagePosition.Top, ImagePosition.Botton
    High = Pic1.Size.Height + pic2.Size.Height
  Case ImagePosition.Left, ImagePosition.Right
    Wide = Pic1.Width + pic2.Width
End Select
'
' Creo un oggetto Bitmap con le nuove dimensioni
'
Dim bm As New Bitmap(Wide, High)
'
' Ottengo l'oggetto Graphics per questa Bitmap
'
Dim gr As Graphics = Graphics.FromImage(bm)
'
' Inserisco le immagini nella posizione scelta
'
Select Case Dove
  Case ImagePosition.Top
    gr.DrawImage(pic2, New Point(0, 0))
    gr.DrawImage(pic1, New Point(0, pic2.Size.Height))

  Case ImagePosition.Botton
    gr.DrawImage(pic1, New Point(0, 0))
    gr.DrawImage(pic2, New Point(0, pic1.Size.Height))

  Case ImagePosition.Right
    gr.DrawImage(pic1, 0, 0)
    gr.DrawImage(pic2, pic1.Width, 0)

  Case ImagePosition.Left
    gr.DrawImage(pic1, pic2.Width, 0)
    gr.DrawImage(pic2, 0, 0)
   
Case Else
    gr.DrawImage(pic1, 0, 0)
End Select
'
' Assegno l'oggetto image alla function
'
CombineImages = bm
'
' Elimino l'oggetto Graphics
'
gr.Dispose()
Return CombineImages

End Function

Categoria: VB.Net
venerdì, 11 gen 2008 Ore. 17.42
Statistiche
  • Views Home Page: 109.894
  • Views Posts: 560.312
  • Views Gallerie: 108.955
  • n° Posts: 227
  • n° Commenti: 222
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003