Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 01.02.2017
Сообщений: 14
1

Как сделать сохранение из PictureBox?

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

Всем привет, помогите плиз! Я написал код для сохранения картинки из picturebox, но когда я сохраняю ее, я не могу ее потом открыть на компе. Заранее всем большое спасибо)
Вот код:
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace QRedactor
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        bool press = false;
        int x1;
        int y1;
        int w1;
        int h1;
        Point one1;
        Point one2;
        Color Current = Color.Black;
        int tol = 1;
 
        public Bitmap bmp = new Bitmap(785, 539);
        
 
 
        private void radioButton4_CheckedChanged(object sender, EventArgs e)
        {
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            DialogResult D = colorDialog1.ShowDialog();
            if(D== System.Windows.Forms.DialogResult.OK)
            {
                Current = colorDialog1.Color; 
            }
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            pictureBox1.Image = bmp;
            DoubleBuffered = true;
        }
 
        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            Graphics g = Graphics.FromImage(pictureBox1.Image);
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
            if(press)
            {
                one2 = e.Location;
                if(radioButton4.Checked)
                {
                    g.DrawLine(new Pen(Current, tol), one1, one2);
                    one1 = one2;
                }
                pictureBox1.Refresh();
            }
            g.Save();
        }
 
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            Pen MyPen = new Pen(Current, tol);
            if(press)
            {
                x1 = Math.Min(one1.X, one2.X);
                y1 = Math.Min(one1.Y, one2.Y);
                w1 = Math.Abs(one1.X - one2.X);
                h1 = Math.Abs(one1.Y - one2.Y);
                if(radioButton1.Checked)
                {
                    e.Graphics.DrawEllipse(MyPen, x1, y1, w1, h1);
                }
                if(radioButton2.Checked)
                {
                    e.Graphics.DrawRectangle(MyPen, x1, y1, w1, h1);
                }
                if(radioButton3.Checked)
                {
                    e.Graphics.DrawLine(MyPen, one1, one2);
                }
 
 
            }
        }
 
        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            Pen MyPen = new Pen(Current, tol);
            press = false;
            Graphics g = Graphics.FromImage(pictureBox1.Image);
            if(radioButton1.Checked)
            {
                g.DrawEllipse(MyPen, x1, y1, w1, h1);
            }
            if(radioButton2.Checked)
            {
                g.DrawRectangle(MyPen, x1, y1, w1, h1);
            }
            if(radioButton3.Checked)
            {
                g.DrawLine(MyPen, one1, one2);
            }
            g.Save();
        }
 
        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            press = true;
            one1 = e.Location;
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Bitmap bit2 = new Bitmap(785, 539);
            pictureBox1.Image = bit2;
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
        private void comboBox1_TextUpdate(object sender, EventArgs e)
        {
            tol = Convert.ToInt32(comboBox1.Text);
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
 
            if (pictureBox1.Image != null)
            {
                SaveFileDialog savedialog = new SaveFileDialog();
                savedialog.Title = "Сохранить картинку как...";
                savedialog.OverwritePrompt = true;
                savedialog.CheckPathExists = true;
                savedialog.Filter = "(*.bmp)|*.bmp|(*.jpg)|*.jpg|(*.png)|*.png|ALL files(*.*)|*.*";
                savedialog.ShowHelp = true;
                if (savedialog.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        bmp.Save(savedialog.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                    }
                    catch
                    {
                        MessageBox.Show("Невозможно сохранить изображение", "Ошибка",
                            MessageBoxButtons.OK, MessageBoxIcon.Error
                            );
 
                    }
                }
            }
        }
    }
    
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.02.2017, 18:33
Ответы с готовыми решениями:

Как сделать PictureBox круглый?
Очень неопытный, поэтому не судите. public class Picbox : PictureBox { public...

Как сделать прозрачным pictureBox?
Как сделать прозрачным pictureBox?

Как сделать перемещаемый PictureBox
Уважаемые Гуру! Требуется отрисовать картинку в заданном месте экрана и обеспечить функционал...

Как сделать клон PictureBox
На форме есть PictureBox1 (300х200) - план этажа. На нем, в разных местах, несколько PictureBox...

2
8173 / 4432 / 1735
Регистрация: 11.02.2013
Сообщений: 9,421
13.02.2017, 19:10 2
Расширение файла нужно выбирать в соответствии с форматом сохранения
0
0 / 0 / 0
Регистрация: 01.02.2017
Сообщений: 14
14.02.2017, 04:08  [ТС] 3
Спасибо, помог. Но появилась другая проблемка. Я сохраняю изображение, когда я его открываю, у него фон черный, а на самом рисунке белый. Как это исправить?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2017, 04:08

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как сделать мигание pictureBox?
Как сделать мигающий разными цветами pictureBox?

Как сделать прокрутку picturebox?
есть компонент picturebox мне нужно его вниз прокручивать(картину) скролом можно. как...

Как сделать фон pictureBox прозрачным
Дело в том, что когда ставлю pictureBox1 и налаживаю на него pictureBox2 в который загружена...

Как сделать прозрачный фон у PictureBox?
Нашол что можно сделать так this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); //...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.