Хочу сохранить изображение с PictureBox, но постоянно сохраняется только чёрное изображение или вылетает ошибка. Подскажите в чём проблема.
Color CurrentColor = Color.Green;
bool isPresed = false;
Point CurrentPoint;
Point PrePoint;
Graphics g;
public Form1()
{
InitializeComponent();
g = pictureBox1.CreateGraphics();
}
private void button1_Click(object sender, EventArgs e)
{
pictureBox1.Save("test.jpg", ImageFormat.Jpeg);
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
isPresed = true;
CurrentPoint = e.Location;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (isPresed)
{
PrePoint = CurrentPoint;
CurrentPoint = e.Location;
for_paint();
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
isPresed = false;
}
private void for_paint()
{
Pen p = new Pen(CurrentColor);
g.DrawLine(p, PrePoint, CurrentPoint);
}
Приведённый код рисует на графиксе пикчабокса. Естественно, Image остаётся пустым.
Нужно создать графикс у Image и использовать его. Предварительно, нужно создать картинку нужного размера.
// эту строку удаляем
//g = pictureBox1.CreateGraphics();
var bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
pictureBox1.Image = bitmap;
g = Graphics.FromImage(bitmap);
Ещё нужно обновлять PictureBox, чтобы внесённые в Image изменения отобразились:
private void for_paint()
{
Pen p = new Pen(CurrentColor);
g.DrawLine(p, PrePoint, CurrentPoint);
pictureBox1.Invalidate(); // <--
}
Пишу по памяти не проверяя код. Попробуй так:
pictureBox1.Image.Save("test.jpg", ImageFormat.Jpeg);
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники