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