Ciao, tempo fa ebbi a cimentarmi con lo stesso problema. La soluzione di MItaly è sicuramente la migliore però potresti considerare un'altro approccio: invece di usare una label, recuperi l'oggetto Graphics della picturebox e usi quello per "disegnare il testo".
Mi spiego meglio. Supponiamo che tu voglia che quando premi il button1 all'immagine venga "sovraimpressa" una scritta:
codice:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim g As Graphics = Me.PictureBox1.CreateGraphics
g.DrawString("CIAO", New Font("Arial", 30, FontStyle.Bold), Brushes.Black, 30, 30)
End Sub
Volendo poi si può far tornare in scena la label, basta usare la DrawString quando viene gestito l'evento paint della picturebox e prelevare i parametri da una label:
codice:
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
e.Graphics.DrawString(Me.Label1.Text, Me.Label1.Font, New SolidBrush(Me.Label1.ForeColor), Me.Label1.Left, Me.Label1.Top)
End Sub
In questo modo testo, font, colori, e posizione vengono letti direttamente dalla label1. Quindi puoi modificare direttamente la label (ovviamente il suo backcolor non ha più nessuna importanza) basta che ti ricordi di impostare la sua proprietà visible su false.
Ciao