Графический редактор

Автор: Пользователь скрыл имя, 12 Декабря 2012 в 11:29, курсовая работа

Описание работы

Одним из наиболее распространенных типов программ для работ с графикой являются графические редакторы. Графический редактор - компьютерная программа, позволяющая ее пользователю создавать и редактировать изображения на экране компьютера и сохранять их во многих популярных форматах, например JPEG, PNG, GIF, TIFF.
Некоторые графические редакторы специализируются на редактировании фотореалистических изображений, в то время как другие более "заточены" на создание и редактирование рисунков.
Некоторые из наиболее распространенных инструментов графических редакторов позволяют произвести следующие редакции:

Содержание

ВВЕДЕНИЕ………………………………………………………………………..3
1 ПОСТАНОВКА ЗАДАЧИ……………………………………………………...4
1.1 Теоретическое введение………………………………………………………4
1.1.1 Операционная система……………………………………………………...4
1.1.2 Виды графических редакторов……………………………………………..4
1.1.3 Функции основных графических редакторов……………………………..5
1.2 Постановка задачи………………………………………………………….....9
2 ПРОЕКТИРОВАНИЕ………………………………………………………….11
2.1 Выбор используемых технологий.……………………………….................11
3 РАЗРАБОТКА………………………………………………………………….12
3.1 Выбор системной архитектуры……………………………………………..12
3.2 Описание функций, реализующих программой…………………………...12
3.3 Разработка графического интерфейса……………………………………...23
3.4 Разработка классов………………………………………………..................25
3.5 Алгоритм программы………………………………………………………..29
4 ТЕСТИРОВАНИЕ ПРОГРАММЫ…………………………………………...30
5 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ…………………………………………35
5.1 Назначение программы……………………………………………………...35
5.2 Технические средства для запуска программы……………………………35
5.3 Действия оператора………………………………………………………….36
ВЫВОДЫ………………………………………………………………………...41
ПЕРЕЧЕНЬ ССЫЛОК…………………………………………………………...42
ПРИЛОЖЕНИЕ А……………………………………………

Работа содержит 1 файл

КУРСОВОЙ-Майборода.docx

— 1.69 Мб (Скачать)

        private void DrawFigure(Rectangle r, Graphics g)

        {

            switch (figureMode)

            {

                case 0:

                    if (!checkBox1.Checked)

                        g.FillRectangle(brush, r);

                    g.DrawRectangle(pen, r);

                    break;

                case 1:

                    if (!checkBox1.Checked)

                        g.FillEllipse(brush, r);

                    g.DrawEllipse(pen, r);

                    break;

            }

        }

        // метод рисования прямоугольника

        private Rectangle PtToRect(Point p1, Point p2)

        {

            if (equalSize)

            {

                int dx = p2.X - p1.X, dy = p2.Y - p1.Y;

                if (Math.Abs(dx) > Math.Abs(dy))

                    p2.X = p1.X + Math.Sign(dx) * Math.Abs(dy);

                else

                    p2.Y = p1.Y + Math.Sign(dy) * Math.Abs(dx);

            }

            int x = Math.Min(p1.X, p2.X),

                y = Math.Min(p1.Y, p2.Y),

                w = Math.Abs(p2.X - p1.X),

                h = Math.Abs(p2.Y - p1.Y);

            return new Rectangle(x, y, w, h);

        }

 

        private void ReversibleDraw()

        {

            Point p1 = pictureBox1.PointToScreen(StartPt),

                p2 = pictureBox1.PointToScreen(movePt);

            if (mode == 1)

                ControlPaint.DrawReversibleLine(p1, p2, Color.Black);

            else

                ControlPaint.DrawReversibleFrame(PtToRect(p1, p2), Color.Black, (FrameStyle)((figureMode + 1) % 2));

 

        }

        //создание нового поля

        private void Newbutton1_Click(object sender, EventArgs e)

        {

           

            form2.ActiveControl = form2.numericUpDown1;

            if (form2.ShowDialog() == DialogResult.OK)

            {

                saveFileDialog1.FileName = "";

                Text = "Image Editor";

                UpdateOldImage();

            }

        }

        // открытие файла

        private void Openbutton2_Click(object sender, EventArgs e)

        {

            StartPt = nullPt;

 

            if (openFileDialog1.ShowDialog() == DialogResult.OK)

            {

                string s = openFileDialog1.FileName;

                try

                {

                    Image im = new Bitmap(s);

                    Graphics g = Graphics.FromImage(im);

                    g.Dispose();

                    if (pictureBox1.Image != null)

                        pictureBox1.Image.Dispose();

                    pictureBox1.Image = im;

                    UpdateOldImage();// отмена действия

                }

                catch

                {

                    MessageBox.Show("File" + s + " has a wrong format.", "Error");

                    return;

                }

                Text = "Image Editor-" + s;

                saveFileDialog1.FileName = Path.ChangeExtension(s, "png");

                openFileDialog1.FileName = "";

 

 

            }

 

        }

        // сохранение файла

        private void Savebutton3_Click(object sender, EventArgs e)

        {

            StartPt = nullPt;

 

            string s0 = saveFileDialog1.FileName;

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)

            {

                string s = saveFileDialog1.FileName;

                if (s.ToUpper() == s0.ToUpper())

                {

                    s0 = Path.GetDirectoryName(s0) + "\\($$##$$).png";

                    pictureBox1.Image.Save(s0);

                    pictureBox1.Image.Dispose();

                    File.Delete(s);

                    File.Move(s0, s);

                    pictureBox1.Image = new Bitmap(s);

                }

                else

                    pictureBox1.Image.Save(s);

                Text = "Image Editor-" + s;

 

            }

        }

        // отслеживание координат

        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)

        {

            label1.Text = string.Format("X,Y:{0},{1}", e.X, e.Y);

            toolStripStatusLabel2.Text = string.Format("X,Y:{0},{1}", e.X, e.Y);

            if (StartPt == nullPt)

                return;

            if (e.Button == MouseButtons.Left)

                switch (mode)

                {

                    case 0:

                        Graphics g = Graphics.FromImage(pictureBox1.Image);

                        g.DrawLine(pen, StartPt, e.Location);

                        g.Dispose();

                        StartPt = e.Location;

                        pictureBox1.Invalidate();

                        break;

                    case 1:

                    case 2:

                        ReversibleDraw();

                        movePt = e.Location;

                        equalSize = Control.ModifierKeys == Keys.Control;

                        ReversibleDraw();

                        break;

                }

         

        }

 

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)

        {

            movePt = StartPt = e.Location;

            UpdateOldImage();// отмена действия

            if (Control.ModifierKeys == Keys.Alt)

            {

                Color c = (pictureBox1.Image as Bitmap).GetPixel(e.X, e.Y);

                if (e.Button == MouseButtons.Left)

                    Palitlabel2.BackColor = c;

                else

                    NizPalitlabel4.BackColor = c;

            }

            else

                if (mode == 3)

                {

                    Graphics g = Graphics.FromImage(pictureBox1.Image);

                    using (SolidBrush b = new SolidBrush(pen.Color))

                        g.DrawString(textBox1.Text, font, b, e.Location);

                    g.Dispose();

                    pictureBox1.Invalidate();

                }

        }

        // обработчик для очистки

        private void Clearbutton4_Click(object sender, EventArgs e)

        {

            if (MessageBox.Show("Очистить рисунок?", "Очистка", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

             == DialogResult.Yes)

            {

                UpdateOldImage();// отмена действия

                using (Graphics g = Graphics.FromImage(pictureBox1.Image))

                    g.Clear(Color.White);

                изменитьЦветФонаToolStripMenuItem.BackColor = Color.White;

                pictureBox1.Invalidate();

            }

            //{

            //    e.Cancel = true;

            //}

 

 

        }

        // задавание цвета обьектам

        private void Palitlabel2_Click(object sender, EventArgs e)

        {

            Label Lb = sender as Label;

            colorDialog1.Color = Lb.BackColor;

            if (colorDialog1.ShowDialog() == DialogResult.OK)

                Lb.BackColor = colorDialog1.Color;

            изменитьЦветПалитрыToolStripMenuItem1.BackColor = Palitlabel2.BackColor;

            textBox1.ForeColor = Palitlabel2.BackColor;

          

        }

 

        private void Palitlabel2_BackColorChanged(object sender, EventArgs e)

        {

            pen.Color = Palitlabel2.BackColor;

            Figlabel5.Invalidate();

        }

 

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)

        {

            pen.Width = (int)numericUpDown1.Value;

            Figlabel5.Invalidate();

        }

 

        private void PenradioButton1_CheckedChanged(object sender, EventArgs e)

        {

            RadioButton rb = sender as RadioButton;

            if (!rb.Checked)

                return;

            mode = rb.TabIndex;

 

 

        }

 

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)

        {

            if (StartPt == nullPt)

                return;

            if (mode >= 1)

            {

 

                Graphics g = Graphics.FromImage(pictureBox1.Image);

                switch (mode)

                {

                    case 1:

                        g.DrawLine(pen, StartPt, movePt);

                        break;

                    case 2:

                        DrawFigure(PtToRect(StartPt, movePt), g);

                        break;

                }

                g.Dispose();

                pictureBox1.Invalidate();

                this.Refresh();// не дает возможности рисовать за палитрой

            }

            {

 

            }

        }

        // Нижняя палитра

        private void NizPalitlabel4_BackColorChanged(object sender, EventArgs e)

        {

            brush.Color = NizPalitlabel4.BackColor;

            Figlabel5.Invalidate();

        }

        //Обработчик для метки с фигурами

        private void Figlabel5_Paint(object sender, PaintEventArgs e)

        {

            Graphics g = e.Graphics;

            Rectangle r = Figlabel5.ClientRectangle;

            r.Width--; r.Height--;

            DrawFigure(r, g);

        }

 

        private void Figlabel5_MouseDown(object sender, MouseEventArgs e)

        {

            FigureradioButton3.Checked = true;

            figureMode = (figureMode + 1) % 2;

            Figlabel5.Invalidate();

        }

        // Прозрачность фигур

        private void checkBox1_CheckedChanged(object sender, EventArgs e)

        {

            Figlabel5.Invalidate();

        }

 

        // отмена действия

 

        private void UpdateOldImage()

        {

            oldImage.Dispose();

            oldImage = new Bitmap(pictureBox1.Image);

        }

        // клавиша отмены

        private void Form1_KeyDown(object sender, KeyEventArgs e)

        {

            if (e.KeyCode == Keys.Escape)

            {

             

                pictureBox1.Image = new Bitmap(oldImage);

            }

 

        }

        private void отменитьПоследнееToolStripMenuItem_Click(object sender, EventArgs e)

        {

                pictureBox1.Image.Dispose();

                pictureBox1.Image = new Bitmap(oldImage);

           

        }

 

        private void изменитьЦветФонаToolStripMenuItem_Click(object sender, EventArgs e)

        {

            if (MessageBox.Show("Рисунок будет зарисован!", "Внимание", MessageBoxButtons.YesNo) == DialogResult.Yes)

            {

                UpdateOldImage();

                ToolStripMenuItem T = sender as ToolStripMenuItem;

                colorDialog1.Color = T.BackColor;

                if (colorDialog1.ShowDialog() == DialogResult.OK)

                    T.BackColor = colorDialog1.Color;

                using (Graphics g = Graphics.FromImage(pictureBox1.Image))

                    g.Clear(T.BackColor);

                pictureBox1.Invalidate();

            }

        }

        private void изменитьЦветПалитрыToolStripMenuItem1_Click(object sender, EventArgs e)

        {

           

            ToolStripMenuItem P = sender as ToolStripMenuItem;

            colorDialog1.Color = P.BackColor;

            if (colorDialog1.ShowDialog() == DialogResult.OK)

                P.BackColor = colorDialog1.Color;

            Palitlabel2.BackColor = P.BackColor;

            textBox1.ForeColor = P.BackColor;

           

        }

 

 

 

        private void textBox1_Enter(object sender, EventArgs e)

        {

            FontradioButton4.Checked = true;

        }

        // задать шрифт

        private void Fontbutton5_Click(object sender, EventArgs e)

        {

            fontDialog1.Font = font;

            if (fontDialog1.ShowDialog() == DialogResult.OK)

            {

                Font f = font;

                textBox1.Font = font = fontDialog1.Font;

                f.Dispose();

            }

        }

 

        private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)

        {

            e.DrawBackground();

            // - заливка фоновым цветом области

            // связанной с рисуемым элементом списка

            using (Pen p = new Pen(e.ForeColor, 2))

            {

                // рисование образцов линий в элеметах выпадающего списка

                p.DashStyle = (DashStyle)e.Index;

                int y = (e.Bounds.Top + e.Bounds.Bottom) / 2;

                e.Graphics.DrawLine(p, e.Bounds.Left, y, e.Bounds.Right, y);

            }

            e.DrawFocusRectangle();

            // дополнительное выделение текущего элемента списка

 

 

        }

 

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

        {

            pen.DashStyle = (DashStyle)comboBox1.SelectedIndex;

            Figlabel5.Invalidate();

        }

        // Выход с программы

        private void выходToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Close();

        }

        // Выход с программы

          private void Form1_FormClosing(object sender, FormClosingEventArgs e)

        {

            if (MessageBox.Show("Вы уверены,что хотите выйти из программы?", "Закрытие приложения!", MessageBoxButtons.YesNo,MessageBoxIcon.Question)

                == DialogResult.No)

            {

                e.Cancel = true;

            }

          }

        //выхов окна о программе

        private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Inforfation f = new Inforfation();

            f.Show();

        }

        // вызов справки

        private void вызовСправкиToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Spravka f1 = new Spravka();

            f1.Show();

        }

 

     

 

        private void панельИнструментовToolStripMenuItem_Click(object sender, EventArgs e)

        {

 

            if (панельИнструментовToolStripMenuItem.Checked)

            {

                groupBox1.Visible = true;

            }

            else

            {

                groupBox1.Visible = false;

            }

        }

 

        private void палитраToolStripMenuItem1_CheckedChanged(object sender, EventArgs e)

        {

          

            if (палитраToolStripMenuItem1.Checked)

            {

                Palitlabel2.Visible = true;

                NizPalitlabel4.Visible = true;

            }

            else

            {

                Palitlabel2.Visible = false;

                NizPalitlabel4.Visible = false;

            }

        }

 

        // вставить из буфера    

 

        private void вставитьToolStripMenuItem_Click(object sender, EventArgs e)

        {

           pictureBox1.Image = Clipboard.GetImage();

 

        }

        //коировать в буфер

        private void копироватьToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Clipboard.SetImage(pictureBox1.Image);

         

        }

        //вырезать в буфер

        private void вырезатьToolStripMenuItem_Click(object sender, EventArgs e)

        {

 

            Graphics gr = Graphics.FromImage(pictureBox1.Image);

            Clipboard.SetImage(pictureBox1.Image);

            gr.Clear(Color.White);

            this.Refresh();

        }

        // просмотр изображения

        private void просмотрИзображенияToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Prosmotr pr = new Prosmotr();

            pr.pictureBox2.Size = pictureBox1.Size;

            pr.pictureBox2.Image = pictureBox1.Image;

             pr.Show();

 

          

        }

 

     

        }     

    }

Form2.cs

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 Paint1

Информация о работе Графический редактор