Paint on C# сохранение + рисование

229
05 апреля 2018, 11:47

Привет всем. Хотел узнать а как можно реализовать сохранение картинки + то что я на ней нарисовал, сама функция для сохранения реализована, а как к ней прибавить то что рисовал я сам??? Заранее спасибо! Ф-я рисования

 private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if(pressed)
            {
                PrevPoint = CurrentPoint;
                CurrentPoint = e.Location;
                color_mix();
            }
        }

Функция сохранения

   private void button2_Click(object sender, EventArgs e)
        {
            if (pictureBox1.Image != null)
            {
                using (Bitmap bmp = new Bitmap(pictureBox1.ClientSize.Width,pictureBox1.ClientSize.Height))
                {
                    SaveFileDialog sfd = new SaveFileDialog();
                    sfd.FileName = "1111";
                    sfd.DefaultExt = "jpg";
                    sfd.Filter = "ImageFiles(*.BMP, *.JPG, *.GIF, *.PNG)|*.bmp,*.jpg,*.gif,*.png | AllFiles(*.*) | *.* ";
                    pictureBox1.DrawToBitmap(bmp, pictureBox1.ClientRectangle);
                    if (sfd.ShowDialog() == DialogResult.OK)
                        bmp.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                }
            }

Выдает ошибку при сейве

System.Runtime.InteropServices.ExternalException (0x80004005): В GDI+ возникла ошибка общего вида.
   в System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
   в System.Drawing.Image.Save(String filename, ImageFormat format)
   в Paint.Form1.button2_Click(Object sender, EventArgs e) в C:\Users\User\source\repos\Paint\Paint\Form1.cs:строка 75
   в System.Windows.Forms.Control.OnClick(EventArgs e)
   в System.Windows.Forms.Button.OnClick(EventArgs e)
   в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   в System.Windows.Forms.Control.WndProc(Message& m)
   в System.Windows.Forms.ButtonBase.WndProc(Message& m)
   в System.Windows.Forms.Button.WndProc(Message& m)
   в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Answer 1

Попробуйте переписать вашу функцию сохранения так:

using (Bitmap bmp = new Bitmap(pictureBox1.ClientSize.Width,
                               pictureBox1.ClientSize.Height))
{
   pictureBox1.DrawToBitmap(bmp, pictureBox1.ClientRectangle);
   bmp.Save(yourfilename, ImageFormat.Png);
}
READ ALSO
Интеграционное тестирование .Net приложений

Интеграционное тестирование .Net приложений

Здравствуйте, мне необходимо реализовать интеграционные тесты настольногоNet приложения, которые будут запускаться после каждого билда

259
WPF. Часть текста Title изменить шрифт на Bold

WPF. Часть текста Title изменить шрифт на Bold

У формы есть заголовок окна TitleМне нужно назвать приложение например: Приложение организации Тест, слово тест выделить жирным

204
Получение данных во View через Ajax Asp MVC

Получение данных во View через Ajax Asp MVC

Не могу понять как перехватить данные во View Asp net с помощью ajax Есть вот такой метод он выводит во View Json данные

261
Запросить windows авторизацию

Запросить windows авторизацию

Я хочу запросить ввод пароля пользователя, когда он нажимает на кнопкуМожете подсказать метод, который вызовет стандартное диалоговое окно...

232