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

Рисование в Panel - Сохранение рисунка

15.10.2016, 23:47. Показов 11598. Ответов 11

Студворк — интернет-сервис помощи студентам
Как реализовать сохранение нарисованного в Panel.
Вроде сделал простенькую рисовалку (которая рисует эллипсами) с 3 функциями (менять цвета, регулировать толщину, стереть всё) но нужна 4 функция, сохранение нарисованного , смотрел на форумах ничего не нашёл под мой код,
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace draw
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        bool draw = false;
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void Form1_MouseClick(object sender, MouseEventArgs e)
        {
            Graphics g = this.CreateGraphics();
            SolidBrush br = new SolidBrush(Color.Black);
            Pen pen = new Pen(br, 5);
            g.DrawEllipse(pen, e.X, e.Y, 50, 50);
        }
        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            draw = true;
        }
        SolidBrush br = new SolidBrush(Color.Black);
        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            if (draw)
            {
                Graphics g = panel1.CreateGraphics();
 
                g.FillRectangle(br, e.X, e.Y, trackBar1.Value, trackBar1.Value);
            }
        }
 
        private void panel1_MouseUp(object sender, MouseEventArgs e)
        {
            draw = false;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            colorDialog1.ShowDialog();
            br = new SolidBrush(colorDialog1.Color);
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Graphics g = panel1.CreateGraphics();
            g.Clear(SystemColors.Control);
        }
 
        private void trackBar1_Scroll(object sender, EventArgs e)
        {
 
        }
 
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
 
        }
 
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.10.2016, 23:47
Ответы с готовыми решениями:

Рисование в panel: вместо рисунка - белый прямоугольник
не получается нарисовать рисунок в panel, вместо этого появляется просто белый квадрат private void panel1_Paint(object sender,...

Рисование в PictureBox и сохранение рисунка
Создается простой графический редактор на C#. Проблема следующая: в PictureBox загружается рисунок из файла. Пользователь рисует в...

Очищение рисунка в panel при перекрытии его другими окнами
Всем добрый день. Изучаю c# пытаюсь написать свой Paint. Столкнулся с траблой очищается рисунок, который находится в Panel1. Очищается...

11
 Аватар для iDReeM
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
16.10.2016, 01:14
костылизация:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
void ScreenShotPanel(string FileName)
        {
            //Получить размер бордера.
            Size BorderSize = new Size(this.Width - this.panel1.Width, this.Height - this.panel1.Height);
            //создаем изображение рамером в панель
            Bitmap screenshot = new Bitmap(this.panel1.Width, this.panel1.Height);
            //инициализируем графикс по это изображение.
            Graphics gr = Graphics.FromImage(screenshot);
            //копируем с экрана пиксели, не лучший костыль скажу сразу. попытался учесть размер бордера.
            gr.CopyFromScreen(this.Location.X + (BorderSize.Width / 2), this.Location.Y + (BorderSize.Height) - 8, 0, 0, new Size(this.Width - BorderSize.Width, this.Height - BorderSize.Height));
            //сохраняем
            screenshot.Save(FileName);
        }
юзинг изич
C#
1
 ScreenShotPanel("file.png");
1
 Аватар для Sanya_sa
913 / 817 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
16.10.2016, 03:28
MrFoge,
Все не верно сделано. Вот держите на скорую руку, примерно так должно быть.
Миниатюры
Рисование в Panel - Сохранение рисунка  
Вложения
Тип файла: rar Paint.rar (57.4 Кб, 167 просмотров)
0
0 / 0 / 0
Регистрация: 15.10.2016
Сообщений: 9
16.10.2016, 12:31  [ТС]
Цитата Сообщение от iDReeM Посмотреть сообщение
костылизация:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
void ScreenShotPanel(string FileName)
        {
            //Получить размер бордера.
            Size BorderSize = new Size(this.Width - this.panel1.Width, this.Height - this.panel1.Height);
            //создаем изображение рамером в панель
            Bitmap screenshot = new Bitmap(this.panel1.Width, this.panel1.Height);
            //инициализируем графикс по это изображение.
            Graphics gr = Graphics.FromImage(screenshot);
            //копируем с экрана пиксели, не лучший костыль скажу сразу. попытался учесть размер бордера.
            gr.CopyFromScreen(this.Location.X + (BorderSize.Width / 2), this.Location.Y + (BorderSize.Height) - 8, 0, 0, new Size(this.Width - BorderSize.Width, this.Height - BorderSize.Height));
            //сохраняем
            screenshot.Save(FileName);
        }
юзинг изич
C#
1
 ScreenShotPanel("file.png");
Или я не догоняю или что, но
1.Куда он это сохраняет, я вроде указал в скобках свою флешку и папку, захожу, а там нет файла?
2.Он сам сохраняет или нужно на что то нажать?
Может я неправильно указал путь?
C#
1
ScreenShotPanel("F:\\way\file.png");
0
.NET senior
 Аватар для bax_tang
441 / 359 / 137
Регистрация: 23.09.2016
Сообщений: 980
16.10.2016, 13:02
MrFoge,
C#
1
ScreenShotPanel("F:\\way\\file.png"); // слэши!
0
0 / 0 / 0
Регистрация: 15.10.2016
Сообщений: 9
16.10.2016, 13:09  [ТС]
Цитата Сообщение от bax_tang Посмотреть сообщение
MrFoge,
C#
1
ScreenShotPanel("F:\\way\\file.png"); // слэши!
Всё равно не сохраняет, погоди , а чтобы сохранило что надо нажать?
0
 Аватар для Sanya_sa
913 / 817 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
16.10.2016, 13:38
MrFoge, я Вам написал что у Вас не верный подход, для того проекта что я скидывал сохранка делается вот так:

C#
1
2
3
4
5
6
7
8
9
Bitmap bm = new Bitmap(this.Width, this.Height);
this.DrawToBitmap(bm, new Rectangle(0, 0, bm.Width, bm.Height));
 
SaveFileDialog sfd = new SaveFileDialog();
 
if (sfd.ShowDialog() == DialogResult.OK)
{
    bm.Save(sfd.FileName);
}
0
0 / 0 / 0
Регистрация: 15.10.2016
Сообщений: 9
16.10.2016, 13:47  [ТС]
Цитата Сообщение от Sanya_sa Посмотреть сообщение
MrFoge, я Вам написал что у Вас не верный подход, для того проекта что я скидывал сохранка делается вот так:

C#
1
2
3
4
5
6
7
8
9
Bitmap bm = new Bitmap(this.Width, this.Height);
this.DrawToBitmap(bm, new Rectangle(0, 0, bm.Width, bm.Height));
 
SaveFileDialog sfd = new SaveFileDialog();
 
if (sfd.ShowDialog() == DialogResult.OK)
{
    bm.Save(sfd.FileName);
}
Просто мне не нужно рисовать эллипсами и линиями, мне нужно по пикселям как в моём проекте и сохранить рисунок.
0
 Аватар для Sanya_sa
913 / 817 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
16.10.2016, 13:52
Цитата Сообщение от MrFoge Посмотреть сообщение
Просто мне не нужно рисовать эллипсами и линиями, мне нужно по пикселям как в моём проекте и сохранить рисунок.
Какая разница, по пикселям или фигурами? РАсширте мой код, под свои нужды. А вот Ваш уже проблемотично будет расширять. Конечно смотрите сами, я когда начинал программировать, примерно как Вы реализовывал свои зыдумки по рисованию, в итоги все равно пришел к тому как это правильно делать. Просто Ваш подход с точки зрения оеального использования бесполезен (как и та рисовал ка что я скинул), а сточки зрения обучения Ваш код не побоюсь этого слова опасен, потому что все равно рано или поздно Вам придется переучиваться. Не помню кто сказа "плохие знания - хуже незнания!".
Только без обид, сам таким был) Удачи.
0
 Аватар для Sanya_sa
913 / 817 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
16.10.2016, 14:23
Вот с сохранкой.
Вложения
Тип файла: rar Paint.rar (70.4 Кб, 238 просмотров)
1
0 / 0 / 0
Регистрация: 15.10.2016
Сообщений: 9
16.10.2016, 14:26  [ТС]
Цитата Сообщение от Sanya_sa Посмотреть сообщение
Вот с сохранкой.
А, ну тогда спасибо!
0
 Аватар для iDReeM
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
16.10.2016, 19:09
Цитата Сообщение от MrFoge Посмотреть сообщение
.Куда он это сохраняет, я вроде указал в скобках свою флешку и папку, захожу, а там нет файла?
когда ты при сохранении файла указываешь просто: имяфайла.формат - программа сохраняет файл рядом с собой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.10.2016, 19:09
Помогаю со студенческими работами здесь

Рисование в Panel
Здравствуйте. Есть два вопроса. Ответьте пожалуйста: 1. Как в Panel нарисовать прямоугольник с скругленными углами. 2. Каким...

Panel стирает часть нарисованного на нем рисунка. Как оставить рисунок неизменным?
Есть Panel, который исполняет роль холста для рисования. Рисует хорошо, однако при изменении размера Panel рисунок, находящийся в области,...

Рисование в боаузере и сохранение на сервере рисунка
Как сделать похожий сервис? http://printio.ru/tees/new Где можно почитать про эти технологии?

Сохранение Рисунка из Word в отдельный файл Рисунка
Ситуация следующая. В документе Word есть рисунок, его надо преобразовать в файл Рисунок с сохранением всего качества. Как это сделать?...

Размещение рисунка на Panel
Здравствуйте, подскажите пожалуйста как разместить bitmap рисунок на панели. Нашёл что у Tpanel свойство Canvas недоступно. Нашёл решение:...


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

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

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru