0 / 0 / 0
Регистрация: 07.06.2023
Сообщений: 3

Сохранение изображения из picturebox1

09.06.2023, 01:33. Показов 354. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите, пожалуйста. Мне нужно сохранить кривую, которая рисуется в picturebox1 в виде файла. Она рисуется, изменяется цвет, все работает. При нажатии на button4 появляется сообщение "Файл сохранен как image.jpg", но в самом файле белый квадрат, то есть сама кривая не сохраняется, хотя она рисуется на picturebox1. Что делать? Как исправить код?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
private:
        Graphics^ g;
        Color cvet = cvet.Black;
        void Draw(double x, double y, double l, double u, int t, int q)
        {
            Pen^ myPen = gcnew Pen(cvet);
            int c;
            c = (int)(numericUpDown2->Value);
            myPen->Width = c;
            // начало построения ломанных
            if (t > 0)
            {
                if (q == 1)
                {
                    //формулы построения
                    x += l * System::Math::Cos(u);
                    y -= l * System::Math::Sin(u);
                    u += System::Math::PI;
                }
                u -= 2 * System::Math::PI / 19;//соединение линий
                l /= System::Math::Sqrt(7); //масштаб
                //функции рисования
                Paint(x, y, l, u, t - 1, 0);
                Paint(x, y, l, u + System::Math::PI / 3, t - 1, 1);
                Paint(x, y, l, u + System::Math::PI, t - 1, 1);
                Paint(x, y, l, u + 2 * System::Math::PI / 3, t - 1, 0);
                Paint(x, y, l, u, t - 1, 0);
                Paint(x, y, l, u, t - 1, 0);
                Paint(x, y, l, u - System::Math::PI / 3, t - 1, 1);
            }
            else g->DrawLine(myPen, (float)System::Math::Round(x), (float)System::Math::Round(y), (float)System::Math::Round(x + System::Math::Cos(u) * l), (float)System::Math::Round(y - System::Math::Sin(u) * l));
        }
 
        void Paint(double& x, double& y, double l, double u, int t, int q)
        {
 
            Draw(x, y, l, u, t, q);
            x += l * System::Math::Cos(u);
            y -= l * System::Math::Sin(u);
 
        }
 
 
 
 
private: System::Void numericUpDown1_ValueChanged(System::Object^ sender, System::EventArgs^ e) {
    g = pictureBox1->CreateGraphics();
    g->Clear(pictureBox1->BackColor);
    int t = 0, l = 0;
    t = (int)(numericUpDown1->Value);
    l = (int)(numericUpDown3->Value) + 150;
    Draw(100, 250, l, 0, t, 0);
}
private: System::Void numericUpDown2_ValueChanged(System::Object^ sender, System::EventArgs^ e) {
    g = pictureBox1->CreateGraphics();
    g->Clear(pictureBox1->BackColor);
    int t = 0, l = 0;
    t = (int)(numericUpDown1->Value);
    l = (int)(numericUpDown3->Value) + 150;
    Draw(100, 250, l, 0, t, 0);
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
 
    colorDialog1->ShowDialog();
    cvet = colorDialog1->Color;
    g = pictureBox1->CreateGraphics();
    g->Clear(pictureBox1->BackColor);
    int t = 0, l = 0;
    t = (int)(numericUpDown1->Value);
    l = (int)(numericUpDown3->Value) + 150;
    Draw(100, 250, l, 0, t, 0);
}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
 
    g = pictureBox1->CreateGraphics();
    g->Clear(pictureBox1->BackColor);
}
private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {
    Bitmap^ bmp = gcnew Bitmap(pictureBox1->Width, pictureBox1->Height);
    pictureBox1->DrawToBitmap(bmp, pictureBox1->DisplayRectangle);
    bmp->Save("image.jpg", System::Drawing::Imaging::ImageFormat::Jpeg);
    MessageBox::Show("Файл сохранен как image.jpg");
 
}
private: System::Void numericUpDown3_ValueChanged(System::Object^ sender, System::EventArgs^ e) {
    g = pictureBox1->CreateGraphics();
    g->Clear(pictureBox1->BackColor);
    int t = 0, l = 0;
    t = (int)(numericUpDown1->Value);
    l = (int)(numericUpDown3->Value) + 150;
    Draw(100, 250, l, 0, t, 0);
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.06.2023, 01:33
Ответы с готовыми решениями:

Перемещение изображения от PictureBox1 к PictureBox2
Привет всем, реализую один проектик но столкнулся с проблемой. На форме есть PictureBox1 и PictureBox2, их позиция может быть случайной, их...

Размер изображения в PictureBox1 не корректен
Здравствуйте! У меня такая проблема не знаю как решить, создаю PictureBox1 и imageList1 и получается изображение, либо слишком...

Сохранение pictureBox1.Image в выборном месте и формате
Добрый день тут решил написать программу для скриншота экрана все сделал программа в треи там же и кнопа скриншота. Есть 2 вопроса как...

2
 Аватар для PencilTorch
90 / 60 / 32
Регистрация: 06.08.2020
Сообщений: 220
09.06.2023, 13:15
Я в этом не силен, но может быть сначала сделать экземпляр прямоугольника:
C++
1
System::Drawing::Rectangle rect = System::Drawing::Rectangle(0, 0, 300, 200);
А уже потом битмап:
C++
1
System::Drawing::Bitmap^ bmp = gcnew System::Drawing::Bitmap(pictureBox1->ClientRectangle.Width, pictureBox1->ClientRectangle.Height);
(Тут возможно имеет смысл обратиться к ширине и высоте ClientRectangle, а непросто к pictureBox.)
Чтобы потом:
C++
1
2
pictureBox1->DrawToBitmap(bmp, rect);
bmp->Save("image.jpg", System::Drawing::Imaging::ImageFormat::Jpeg);
0
0 / 0 / 0
Регистрация: 07.06.2023
Сообщений: 3
13.06.2023, 01:42  [ТС]
неа, все равно сохраняется белый квадрат без кривой, кучу времени уже потратил на это, не понимаю в чем дело.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.06.2023, 01:42
Помогаю со студенческими работами здесь

При нажатии мышки, не отпуская, переносить картинки, которые находятся в PictureBox1 по PictureBox1
Здравствуйте,есть проблема. На форме присутствует pictureBox1,а в свою очередь в pictureBox1 размещено n-ое количество других...

Сохранение изображения
Всем привет , ищу уже часа 4 хороших . Подскажите как мне сохранить картинку из pictureBox , в выбранную папку , через openfiledialog не...

Сохранение изображения
Рисую на форме и требуется сохранить изображение с находящееся на ней. Сохраняю вот таким способом: procedure TService.SavePicture; ...

Сохранение изображения
Почему, когда я пытаюсь сохранить изображение из буфера обменаDim img As New Bitmap(My.Computer.Clipboard.GetImage) ...

Сохранение изображения
Моя программа похожа на PAINT только под DOS в Borland C 3.1. Как мне сохранять рисунки которые я рисую?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Old Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru