Эксперт по сдаче вступительных испытаний в ВУЗах
Задание:
Создание графического редактора, позволяющего:
- Создавать, редактировать, загружать, сохранять изображения;
- Рисовать с помощью мыши (при нажатии левой кнопки мыши и её перемещении отображается кривая движения указателя мыши. При нажатии правой кнопки мыши появляется стирательная резинка);
- Задавать цвет, толщину и стиль линии;
- Пользоваться историей изменений в обе стороны – undo и redo.
Текст программы:
Form1.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Lab2
{
public partial class Form1 : Form
{
bool drawing;
int historyCounter;
GraphicsPath currentPath;
Point oldLocation;
public Pen currentPen;
Color historyColor;
List<Image> History;
Color selectedColor = Color.Black;
public Form1()
{
InitializeComponent();
drawing = false;
currentPen = new Pen(selectedColor);
currentPen.Width = trackBar1.Value;
History = new List<Image>();
}
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show(«Версия программы 1.0 \n Разработчик — я. \n Возможности программы: » +
«\n• Создавать, редактировать, загружать, сохранять изображения; » +
«\n• Рисовать с помощью мыши(при нажатии левой кнопки мыши и её перемещении отображается кривая движения указателя мыши.При нажатии правой кнопки мыши появляется стирательная резинка);» +
«\n• Задавать цвет, толщину и стиль линии;» +
«\n• Пользоваться историей изменений в обе стороны – undo и redo.», «Справка»);
}
private void newToolStripMenuItem_Click(object sender, EventArgs e)
{
if (picDrawingSurface.Image != null)
{
var result = MessageBox.Show(«Сохранить текущее изображение перед созданием нового рисунка?», «Предупреждение», MessageBoxButtons.YesNoCancel);
switch (result)
{
case DialogResult.No: break;
case DialogResult.Yes: saveToolStripMenuItem_Click(sender, e); break;
case DialogResult.Cancel: return;
}
}
History.Clear();
historyCounter = 0;
Bitmap pic = new Bitmap(649, 500);
picDrawingSurface.Image = pic;
History.Add(new Bitmap(picDrawingSurface.Image));
}
private void picDrawingSurface_MouseDown(object sender, MouseEventArgs e)
{
if (picDrawingSurface.Image == null)
{
MessageBox.Show(«Сначала создайте новый файл!»);
return;
}
if (e.Button == MouseButtons.Left)
{
drawing = true;
currentPen.Color = selectedColor;
oldLocation = e.Location;
currentPath = new GraphicsPath();
}
if (e.Button == MouseButtons.Right)
{
drawing = true;
historyColor = currentPen.Color;
currentPen.Color = Color.White;
oldLocation = e.Location;
currentPath = new GraphicsPath();
}
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
Bitmap blank = new Bitmap(649, 500);
Graphics g = Graphics.FromImage(blank);
g.Clear(Color.White);
g.DrawImage(picDrawingSurface.Image, 0, 0, 649, 500);
Bitmap tempImage = new Bitmap(blank);
blank.Dispose();
SaveFileDialog SaveDlg = new SaveFileDialog();
SaveDlg.Filter = «JPEG Image|*.jpg|Bitmap Image|*.bmp|GIF Image|*.gif|PNG Image|*.png»;
SaveDlg.Title = «Save an Image File»;
SaveDlg.FilterIndex = 4;
SaveDlg.ShowDialog();
if (SaveDlg.FileName != «»)
{
System.IO.FileStream fs =
(System.IO.FileStream)SaveDlg.OpenFile();
switch (SaveDlg.FilterIndex)
{
case 1:
tempImage.Save(fs, ImageFormat.Jpeg);
break;
case 2:
tempImage.Save(fs, ImageFormat.Bmp);
break;
case 3:
tempImage.Save(fs, ImageFormat.Gif);
break;
case 4:
tempImage.Save(fs, ImageFormat.Png);
break;
}
fs.Close();
}
}
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog OP = new OpenFileDialog();
OP.Filter = «JPEG Image|*.jpg|Bitmap Image|*.bmp|GIF Image|*.gif|PNG Image|*.png»;
OP.Title = «Open an Image File»;
OP.FilterIndex = 1;
if (OP.ShowDialog() != DialogResult.Cancel)
picDrawingSurface.Load(OP.FileName);
picDrawingSurface.AutoSize = true;
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void picDrawingSurface_MouseUp(object sender, MouseEventArgs e)
{
History.RemoveRange(historyCounter + 1, History.Count — historyCounter — 1);
History.Add(new Bitmap(picDrawingSurface.Image));
if (historyCounter + 1 < 10) historyCounter++;
if (History.Count — 1 == 10) History.RemoveAt(0);
currentPen.Color = historyColor;
drawing = false;
try
{
currentPath.Dispose();
}
catch { };
}
private void picDrawingSurface_MouseMove(object sender, MouseEventArgs e)
{
label1.Text = e.X.ToString() + «, » + e.Y.ToString();
if (drawing)
{
Graphics g = Graphics.FromImage(picDrawingSurface.Image);
currentPath.AddLine(oldLocation, e.Location);
g.DrawPath(currentPen, currentPath);
oldLocation = e.Location;
g.Dispose();
picDrawingSurface.Invalidate();
}
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
currentPen.Width = trackBar1.Value;
}
private void undoToolStripMenuItem_Click(object sender, EventArgs e)
{
if (History.Count != 0 && historyCounter != 0)
{
picDrawingSurface.Image = new Bitmap(History[—historyCounter]);
}
else
MessageBox.Show(«История пуста»);
}
private void redoToolStripMenuItem_Click(object sender, EventArgs e)
{
if (historyCounter < History.Count — 1)
{
picDrawingSurface.Image = new Bitmap(History[++historyCounter]);
}
else MessageBox.Show(«История пуста»);
}
private void solidToolStripMenuItem_Click(object sender, EventArgs e)
{
currentPen.DashStyle = DashStyle.Solid;
solidToolStripMenuItem.Checked = true;
dotToolStripMenuItem.Checked = false;
dashDotDotToolStripMenuItem.Checked = false;
}
private void dotToolStripMenuItem_Click(object sender, EventArgs e)
{
currentPen.DashStyle = DashStyle.Dot;
solidToolStripMenuItem.Checked = false;
dotToolStripMenuItem.Checked = true;
dashDotDotToolStripMenuItem.Checked = false;
}
private void dashDotDotToolStripMenuItem_Click(object sender, EventArgs e)
{
currentPen.DashStyle = DashStyle.DashDotDot;
solidToolStripMenuItem.Checked = false;
dotToolStripMenuItem.Checked = false;
dashDotDotToolStripMenuItem.Checked = true;
}
private void colorToolStripMenuItem_Click(object sender, EventArgs e)
{
ColorDialog colorDialog = new ColorDialog();
if (colorDialog.ShowDialog() == DialogResult.OK)
{
selectedColor = colorDialog.Color;
}
}
}
}
Результаты работы приложения:
Ссылка на первоисточник:
http://anodpo-rf.ru/
Оставить комментарий
Inna Petrova 18 минут назад
Нужно пройти преддипломную практику у нескольких предметов написать введение и отчет по практике так де сдать 4 экзамена после практики
Иван, помощь с обучением 25 минут назад
Inna Petrova, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Коля 2 часа назад
Здравствуйте, сколько будет стоить данная работа и как заказать?
Иван, помощь с обучением 2 часа назад
Николай, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Инкогнито 5 часов назад
Сделать презентацию и защитную речь к дипломной работе по теме: Источники права социального обеспечения. Сам диплом готов, пришлю его Вам по запросу!
Иван, помощь с обучением 6 часов назад
Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Василий 12 часов назад
Здравствуйте. ищу экзаменационные билеты с ответами для прохождения вступительного теста по теме Общая социальная психология на магистратуру в Московский институт психоанализа.
Иван, помощь с обучением 12 часов назад
Василий, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Анна Михайловна 1 день назад
Нужно закрыть предмет «Микроэкономика» за сколько времени и за какую цену сделаете?
Иван, помощь с обучением 1 день назад
Анна Михайловна, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Сергей 1 день назад
Здравствуйте. Нужен отчёт о прохождении практики, специальность Государственное и муниципальное управление. Планирую пройти практику в школе там, где работаю.
Иван, помощь с обучением 1 день назад
Сергей, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Инна 1 день назад
Добрый день! Учусь на 2 курсе по специальности земельно-имущественные отношения. Нужен отчет по учебной практике. Подскажите, пожалуйста, стоимость и сроки выполнения?
Иван, помощь с обучением 1 день назад
Инна, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Студент 2 дня назад
Здравствуйте, у меня сегодня начинается сессия, нужно будет ответить на вопросы по русскому и математике за определенное время онлайн. Сможете помочь? И сколько это будет стоить? Колледж КЭСИ, первый курс.
Иван, помощь с обучением 2 дня назад
Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Ольга 2 дня назад
Требуется сделать практические задания по математике 40.02.01 Право и организация социального обеспечения семестр 2
Иван, помощь с обучением 2 дня назад
Ольга, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Вика 3 дня назад
сдача сессии по следующим предметам: Этика деловых отношений - Калашников В.Г. Управление соц. развитием организации- Пересада А. В. Документационное обеспечение управления - Рафикова В.М. Управление производительностью труда- Фаизова Э. Ф. Кадровый аудит- Рафикова В. М. Персональный брендинг - Фаизова Э. Ф. Эргономика труда- Калашников В. Г.
Иван, помощь с обучением 3 дня назад
Вика, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Игорь Валерьевич 3 дня назад
здравствуйте. помогите пройти итоговый тест по теме Обновление содержания образования: изменения организации и осуществления образовательной деятельности в соответствии с ФГОС НОО
Иван, помощь с обучением 3 дня назад
Игорь Валерьевич, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Вадим 4 дня назад
Пройти 7 тестов в личном кабинете. Сооружения и эксплуатация газонефтипровод и хранилищ
Иван, помощь с обучением 4 дня назад
Вадим, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Кирилл 4 дня назад
Здравствуйте! Нашел у вас на сайте задачу, какая мне необходима, можно узнать стоимость?
Иван, помощь с обучением 4 дня назад
Кирилл, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Oleg 4 дня назад
Требуется пройти задания первый семестр Специальность: 10.02.01 Организация и технология защиты информации. Химия сдана, история тоже. Сколько это будет стоить в комплексе и попредметно и сколько на это понадобится времени?
Иван, помощь с обучением 4 дня назад
Oleg, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Валерия 5 дней назад
ЗДРАВСТВУЙТЕ. СКАЖИТЕ МОЖЕТЕ ЛИ ВЫ ПОМОЧЬ С ВЫПОЛНЕНИЕМ практики и ВКР по банку ВТБ. ответьте пожалуйста если можно побыстрее , а то просто уже вся на нервяке из-за этой учебы. и сколько это будет стоить?
Иван, помощь с обучением 5 дней назад
Валерия, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Инкогнито 5 дней назад
Здравствуйте. Нужны ответы на вопросы для экзамена. Направление - Пожарная безопасность.
Иван, помощь с обучением 5 дней назад
Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Иван неделю назад
Защита дипломной дистанционно, "Синергия", Направленность (профиль) Информационные системы и технологии, Бакалавр, тема: «Автоматизация приема и анализа заявок технической поддержки
Иван, помощь с обучением неделю назад
Иван, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Дарья неделю назад
Необходимо написать дипломную работу на тему: «Разработка проекта внедрения CRM-системы. + презентацию (слайды) для предзащиты ВКР. Презентация должна быть в формате PDF или формате файлов PowerPoint! Институт ТГУ Росдистант. Предыдущий исполнитель написал ВКР, но работа не прошла по антиплагиату. Предыдущий исполнитель пропал и не отвечает. Есть его работа, которую нужно исправить, либо переписать с нуля.
Иван, помощь с обучением неделю назад
Дарья, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru