Пример #1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            // инициализация библиотеки GLUT
            Glut.glutInit();
            // инициализация режима окна
            Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH);
            // устанавливаем цвет очистки окна
            Gl.glClearColor(255, 255, 255, 1);
            // устанавливаем порт вывода, основываясь на размерах элемента управления AnT
            Gl.glViewport(0, 0, AnT.Width, AnT.Height);
            // устанавливаем проекционную матрицу
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            // очищаем ее
            Gl.glLoadIdentity();

            Glu.gluOrtho2D(0.0, AnT.Width, 0.0, AnT.Height);

            // переходим к объектно-видовой матрице
            Gl.glMatrixMode(Gl.GL_MODELVIEW);

            // добавлние элемента, отвечающего за управления главным слоем в объект LayersControl
            LayersControl.Items.Add("Главный слой", true);

            ProgrammDrawingEngine = new anEngine(AnT.Width, AnT.Height, AnT.Width, AnT.Height);

            RenderTimer.Start();
        }
Пример #2
0
/*        private void изФайлаToolStripMenuItem_Click(object sender, EventArgs e) {
 *          // вызываем диалог подтверждения
 *          DialogResult result = MessageBox.Show("В данный момент проект уже начат, сохранить изменения перед закрытием проекта?", "Внимание!", MessageBoxButtons.YesNoCancel);
 *          // в зависимости от результата нажатия кнопки пользователем в окне MessageBox
 *          switch (result) {
 *              // если отказ пользователя
 *              case DialogResult.No: {
 *                  // просто создаем чистый проект
 *                  ProgrammDrawingEngine = new anEngine(AnT.Width, AnT.Height, AnT.Width, AnT.Height);
 *
 *                  // очищаем информацию о добавляемых ранее слоях
 *                  LayersControl.Items.Clear();
 *                  // вновь инициализируем нулевой слой:
 *
 *                  // текущий активный слой
 *                  ActiveLayer = 0;
 *                  // счетчик слоев
 *                  LayersCount = 1;
 *                  // счетчик всех создаваемых слоев для генерации имен
 *                  AllLayrsCount = 1;
 *                  // добавлние элемента, отвечающего за управления главным слоем, в объект LayersControl
 *                  LayersControl.Items.Add("Главный слой", true);
 *
 *                  break;
 *              }
 *
 *              case DialogResult.Cancel: {
 *
 *              }
 *          }
 *      }*/

        private void изФайлаToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult reslt = MessageBox.Show("В данный момент проект уже начат, сохранить изменения перед закрытием проекта?", "Внимание!", MessageBoxButtons.YesNoCancel);

            switch (reslt)
            {
            case DialogResult.No: {
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    if (System.IO.File.Exists(openFileDialog1.FileName))
                    {
                        Bitmap ToLoad = new Bitmap(openFileDialog1.FileName);

                        if (ToLoad.Width > AnT.Width || ToLoad.Height > AnT.Height)
                        {
                            MessageBox.Show("Извините, но размер изображения превышает размеры области рисования", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                            return;
                        }
                        ProgrammDrawingEngine = new anEngine(AnT.Width, AnT.Height, AnT.Width, AnT.Height);

                        ProgrammDrawingEngine.SetImageToMainLayer(ToLoad);

                        LayersControl.Items.Clear();

                        ActiveLayer = 0;

                        LayersCount = 1;

                        AllLayrsCount = 1;

                        LayersControl.Items.Add("Главный слой", true);
                    }
                }
                break;
            }

            case DialogResult.Cancel: {
                return;
            }

            case DialogResult.Yes: {
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    Bitmap ToSave = ProgrammDrawingEngine.GetFinalImage();

                    ToSave.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);

                    if (openFileDialog1.ShowDialog() == DialogResult.OK)
                    {
                        if (System.IO.File.Exists(openFileDialog1.FileName))
                        {
                            Bitmap ToLoad = new Bitmap(openFileDialog1.FileName);

                            if (ToLoad.Width > AnT.Width || ToLoad.Height > AnT.Height)
                            {
                                MessageBox.Show("Извините, но размер изображения превышает размеры области рисования", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Stop);

                                return;
                            }

                            ProgrammDrawingEngine = new anEngine(AnT.Width, AnT.Height, AnT.Width, AnT.Height);

                            ProgrammDrawingEngine.SetImageToMainLayer(ToLoad);

                            LayersControl.Items.Clear();

                            ActiveLayer = 0;

                            LayersCount = 1;

                            AllLayrsCount = 1;

                            LayersControl.Items.Add("Главный слой", true);
                        }
                    }
                    break;
                }
                else
                {
                    return;
                }

                break;
            }
            }
        }
Пример #3
0
        // функция создания нового проекта для рисования
        private void новыйРисунокToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // вызываем диалог подтверждения
            DialogResult result = MessageBox.Show("В данный момент проект уже начат, сохранить изменения перед закрытием проекта?", "Внимание!", MessageBoxButtons.YesNoCancel);

            // в зависимости от результата нажатия кнопки пользователем в окне MessageBox

            switch (result)
            {
            // если отказ пользователя
            case DialogResult.No: {
                // просто создаем чистый проект
                ProgrammDrawingEngine = new anEngine(AnT.Width, AnT.Height, AnT.Width, AnT.Height);

                // очищаем информацию о добавленных ранее слоях
                LayersControl.Items.Clear();
                // вновь инициализируем нулевой слой:

                // текущий активный слой
                ActiveLayer = 0;
                // счетчик слоев
                LayersCount = 1;
                // счетчик всех создаваемых слоев для генерации имен
                AllLayrsCount = 1;
                // добавление элемента, отвечающего за управление главным слоем, в объект LayersControl
                LayersControl.Items.Add("Главный слой", true);

                break;
            }

            case DialogResult.Cancel: {
                // возвращаемся
                return;
            }

            case DialogResult.Yes: {
                // открываем окно сохранения файла и, если имя файла указано и DialogResult вернуло сигнал об успешном нажатии кнопки ОК
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    // получаем результирующее изображение слоя
                    Bitmap ToSave = ProgrammDrawingEngine.GetFinalImage();

                    // сохраняем используя имя файла указанное в диалоговом окне сохранения файла
                    ToSave.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);

                    // сохранили - начинаем новый проект:

                    // создаем новый объект "движка" программы
                    ProgrammDrawingEngine = new anEngine(AnT.Width, AnT.Height, AnT.Width, AnT.Height);

                    // очищаем информацию о добавляемых ранее слоях
                    LayersControl.Items.Clear();
                    // вновь инициализируем нулевой слой:

                    // текущий активный слой
                    ActiveLayer = 0;
                    // счетчик слоев
                    LayersCount = 1;
                    // счетчик всех создаваемых слоев для генерации имен
                    AllLayrsCount = 1;
                    // добавление элемента, отвечающего за управления главным слоем, в объект LayersControl
                    LayersControl.Items.Add("Главный слой", true);
                }
                else
                {
                    // если сохранение не заврешилось нормально (скорее всего пользователь закрыл окно сохранения файла)
                    // возвращаемся в проект
                    return;
                }

                break;
            }
            }
        }