Уроки Windows Forms C++/C#
openFiledialog и saveFiledialog в MVS C++/C#В этом уроке будут рассмотрены два очень важных элемента – это "openFiledialog", который будет загружать файл из определённой папки с помощью проводника и "saveFiledialog", который будет сохранять проделанную работу в виде файла в определённую папку, так же с помощью проводника. Все не раз пользовались такой кнопкой, как “Обзор”, загружая фотографии, текстовые документы и прочие файлы. Именно это и будет рассмотрено в этом уроке. В коде этих элементов пишется “фильтр”, в котором указываются форматы файлов, которые нужно загрузить, прочие проводник просто не будет отображать, и так же фильтр ставиться на форматы, в которых файл может быть сохранён. В этом уроке будет рассмотрена работа с изображением - пользователь загружает в "PictureBox" картинку, рисует что-нибудь на ней кистью, как это делать рассмотрено в предыдущем уроке. После того, как картинка видоизменена пользователь сохраняет её в определённую папку, задав ей определённое имя. Создайте проект в приложении "Windows Forms" и перенесите на форму шесть элементов: 1"PictureBox", 3"button", 1"openFiledialog" и 1"saveFileDialog", оформив программу следующим образом:
Button1 будет выполнять функцию загрузки файла. Button2 будет сохранять изменённое изображение. Button3 будет выполнять функцию очистки, если пользователю не понравилось, то как он редактировал изображение. В этом проекте понадобится вызвать три события у “PictureBox” – "MouseMuve", "MouseDown", "MouseUp", поэтому если не знаете как это делать – обязательно посмотрите этот урок. Как всем известно изображения бывают разных форматов, поэтому в фильтре будут написаны все возможные. По мимо этого в коде будет описано свойство, с помощью которого размер "PictureBox" будет равен размеру загружаемого изображения, возможно и обратное. Код программы: :
C#
namespace OpenSave_1_ { public partial class Form1 : Form { public Form1() { InitializeComponent(); pen_for_draw.StartCap = pen_for_draw.EndCap = System.Drawing.Drawing2D.LineCap.Round; } private Bitmap bmp_for_draw; private Point start_point; private bool Draw; private Pen pen_for_draw = new Pen(Color.Black, 4); private string full_name_of_image; private void button1_Click(object sender, EventArgs e) { OpenFileDialog open_dialog = new OpenFileDialog(); open_dialog.Filter = "Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All files (*.*)|*.*"; if (open_dialog.ShowDialog() == DialogResult.OK) { try { full_name_of_image = open_dialog.FileName; bmp_for_draw = new Bitmap(open_dialog.FileName); this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; pictureBox1.Image = bmp_for_draw; pictureBox1.Invalidate(); } catch { DialogResult rezult = MessageBox.Show("Impossible to open selected file", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void button2_Click(object sender, EventArgs e) { if (pictureBox1.Image != null) { string format = full_name_of_image.Substring(full_name_of_image.Length - 4, 4); SaveFileDialog savedialog = new SaveFileDialog(); savedialog.Title = "Сохранить картинку как ..."; savedialog.OverwritePrompt = true; savedialog.CheckPathExists = true; savedialog.Filter = "Image Files(*.BMP)|*.BMP|Image Files(*.JPG)|*.JPG|Image Files(*.GIF)|*.GIF|Image Files(*.PNG)|*.PNG|All files (*.*)|*.*"; savedialog.ShowHelp = true; // If selected, save if (savedialog.ShowDialog() == DialogResult.OK) { try { bmp_for_draw.Save(savedialog.FileName, System.Drawing.Imaging.ImageFormat.Jpeg); } catch { MessageBox.Show("Impossible to save image", "FATAL ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } private void button3_Click(object sender, EventArgs e) { Graphics Графика = pictureBox1.CreateGraphics(); Графика.Clear(SystemColors.Window); } private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { using (Graphics graf = Graphics.FromImage(pictureBox1.Image)) { graf.DrawLine(pen_for_draw, start_point, e.Location); start_point = e.Location; pictureBox1.Invalidate(); } } } private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Draw = true; start_point = e.Location; } } private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Draw = false; } } private void Form1_Load(object sender, EventArgs e) { this.Text = "Изменение картинки"; button1.Text = "Обзор"; button2.Text= "Сохранить"; button3.Text = "Очистить"; } } }
Результат:
Следующий урок >>
