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(); }
/* 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; } } }
// функция создания нового проекта для рисования 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; } } }