これはGraphicsの取得が間違った方法になっているからです。
回避方法としては、Graphics.FromImageメソッドを活用することです。
VB.NET
Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As EventArgs) _
Handles MyBase.Load
Dim img As New Bitmap("C:\test\1.jpg")
Dim g As Graphics = Graphics.FromImage(img)
g.DrawString("描画文字", Me.Font, Brushes.White, 1, 1)
g.DrawString("文字列描画", Me.Font, Brushes.Black, 0, 0)
g.Dispose()
PictureBox1.Image = img
End Sub
Private Sub btn1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles btn1.Click
PictureBox1.Image.Save("C:\test\new1.jpg", _
System.Drawing.Imaging.ImageFormat.Jpeg)
End Sub
C#
private void Form1_Load(object sender, System.EventArgs e)
{
Bitmap img = new Bitmap(@"C:\test\1.jpg");
Graphics g = Graphics.FromImage(img);
g.DrawString("描画文字", this.Font, Brushes.White, 1, 1);
g.DrawString("文字列描画", this.Font, Brushes.Black, 0, 0);
g.Dispose();
PictureBox1.Image = img;
}
private void btn1_Click(object sender, System.EventArgs e)
{
PictureBox1.Image.Save(@"C:\test\new1.jpg",
System.Drawing.Imaging.ImageFormat.Jpeg);
}