You can do something like this :
Dim img As Drawing.Image = Drawing.Image.FromFile("E:\Butterfly_small.png")
Dim sText = "This is a text"
Dim nWidth As Integer = img.Width
Dim nHeight As Integer = img.Height
Dim nTextHeight = 50
Dim bmp As Bitmap = New Bitmap(nWidth, nHeight + nTextHeight, Drawing.Imaging.PixelFormat.Format32bppArgb)
Using g As Graphics = Graphics.FromImage(bmp)
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias
g.DrawImage(img, New Rectangle(New Point(), img.Size), New Rectangle(New Point(), img.Size), GraphicsUnit.Pixel)
Using font As Font = New Font("Arial", 16, Drawing.FontStyle.Regular, GraphicsUnit.Point)
Dim rect As Rectangle = New Rectangle(0, nHeight, nWidth, nTextHeight)
g.FillRectangle(Drawing.Brushes.White, rect)
'g.FillRectangle(Drawing.Brushes.Transparent, rect)
'g.DrawRectangle(Pens.Black, rect)
Dim stringFormat As StringFormat = New StringFormat()
stringFormat.Alignment = StringAlignment.Center
stringFormat.LineAlignment = StringAlignment.Center
g.DrawString(sText, font, Brushes.Black, rect, stringFormat)
End Using
End Using
bmp.Save("E:\ButterflyWithText.png", Drawing.Imaging.ImageFormat.Png)
' Test in a PictureBox
PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize
PictureBox1.Image = bmp