Хорошо, краткое руководство о том, что вы делаете.
Прежде всего, объект Graphics? Все, что он делает, это модифицирует необработанное изображение / растровое изображение, на которое вы указываете. В этом случае вы изменяете необработанное изображение / растровое изображение, которое содержится в вашем postureImg. Вот почему вам не нужно «повторно импортировать» изображение обратно в этот pictureBox - потому что графика изменяет его на месте.
Это означает, что после этого все, что вам нужно сделать, это сохранить это необработанное изображение / растровое изображение в файл - так что вы действительно спрашиваете: «Как сохранить растровое изображение в PictureBox?» в файл? "
В этом случае ответ довольно прост:
postureImg.Image.Save(@"C:\someplace.jpg", ImageFormat.Jpeg);
РЕДАКТИРОВАТЬ: Ах, я забыл, что VS делает некоторые изворотливые вещи с PicBox - у него есть «фактическое» изображение и «отображаемое» изображение. То, что вы редактировали, это «отображаемое» изображение, которое не является постоянным (оно исчезнет, если форма обновится.)
Если честно, вам, вероятно, будет лучше, если вы никогда не пойдете прямо с изображения в графическом окне. Например, вот код, который не работает:
Graphics g = Graphics.FromHwnd(pictureBox1.Handle);
SolidBrush brush_Grey = new SolidBrush(Color.Green);
SolidBrush brush_Gold = new SolidBrush(Color.Red);
Rectangle rect = new Rectangle(new Point(100, 100), new Size(10, 10));
g.FillEllipse(brush_Gold, rect);
g.Dispose();
pictureBox1.Image.Save(@"C:\tmpSO1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
... хорошая подсказка, что это не сработает, если вы выполните это при загрузке формы, он не будет отображать красный круг; и если форма должна обновиться из-за отсечения или тому подобного, красный круг исчезнет.
В любом случае, вот код, который работает:
Bitmap bmp = new Bitmap(pictureBox1.Image);
Graphics g = Graphics.FromImage(bmp);
SolidBrush brush_Grey = new SolidBrush(Color.Green);
SolidBrush brush_Gold = new SolidBrush(Color.Red);
Rectangle rect = new Rectangle(new Point(100, 100), new Size(10, 10));
g.FillEllipse(brush_Gold, rect);
g.Dispose();
pictureBox1.Image = bmp;
pictureBox1.Image.Save(@"C:\tmpSO2.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
Вместо того, чтобы модифицировать PictureBox на месте, из него загружается отдельный BMP, и обратно в него.