Генератор цветов Уроки C++ Уроки Windows forms Учебники по программированию Уроки HTML Уроки CSS Готовые задания Исходники Полезные программы
регистрация доменов

Дешёвые домены


Уроки 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 = "Очистить";
}

}
}



Результат:






Следующий урок >>