//Конструктор формы public frmMain() { InitializeComponent(); //Словарь для сохранения битмапов для разных вкладок pictures = new Dictionary <int, Bitmap>(); //Создание битмапа для первой вкладки var currPicture = new Bitmap(cDrawField.Width, cDrawField.Height); picturesCounter++; cDrawField.Image = currPicture; pictures[picturesCounter] = currPicture; //Загрузка в Graphics Image из PictureBox graphics = Graphics.FromImage(cDrawField.Image); graphics.Clear(Color.White); //Словарь радио-кнопок для вкладок tabButtons = new Dictionary <int, RadioButton>(); //Создание кнопки для первой вкладки var tab = new RadioButton(); tabsPanel.Controls.Add(tab); tab.Appearance = Appearance.Button; tab.Checked = true; tab.Width = 150; tab.Height = 26; tab.Margin = new Padding(0, 1, 10, 1); tab.Name = "tabBtn" + picturesCounter; tab.Text = "New picture"; tabButtons[picturesCounter] = tab; tab.Click += tabOnClick; activeTab = 1; //Настройка скролла для панели вкладок tabsPanel.VerticalScroll.Value = tabsPanel.Height; tabsPanel.VerticalScroll.SmallChange = tabsPanel.Height; toolPanelBtn_Line.Checked = true; currentShape = new Line(colorDialog_Line.Color, (float)selectLineWidth.Value); shapeInProgress = false; preShowShape = new Line(colorDialog_Line.Color, (float)selectLineWidth.Value); preShowShape.showMode = Shape.TShowMode.PRE_SHOW; preShowBuffer = new Bitmap(cDrawField.Image); tabShapesList = new Dictionary <int, ShapesList>(); tabShapesList[picturesCounter] = new ShapesList(); lblActivePlugin.Text = ""; }
//Создание новой картинки private void menuStripItemFile_Create_Click(object sender, EventArgs e) { //Сохранение текущего поля рисования cancelDrawing(); pictures[activeTab] = new Bitmap((Bitmap)cDrawField.Image); //Корректировка размеров области рисования cDrawField.Width = cPanelDrawField.Width; cDrawField.Height = cPanelDrawField.Height; //Создание нового битмапа var currPicture = new Bitmap(cDrawField.Width, cDrawField.Height); //Сохранение в словарь созданного битмапа picturesCounter++; cDrawField.Image = currPicture; pictures[picturesCounter] = currPicture; //Загрузка в Graphics Image из PictureBox graphics = Graphics.FromImage(cDrawField.Image); graphics.Clear(Color.White); //Создание кнопки новой вкладки var tab = new RadioButton(); tabsPanel.Controls.Add(tab); tab.Appearance = Appearance.Button; tab.Checked = true; tab.Width = 150; tab.Height = 26; tab.Margin = new Padding(0, 1, 10, 1); tab.Name = "tabBtn" + picturesCounter; tab.Text = "New picture"; tabButtons[picturesCounter] = tab; tab.Click += tabOnClick; activeTab = picturesCounter; preShowBuffer = new Bitmap(cDrawField.Image); tabShapesList[picturesCounter] = new ShapesList(); //Сброс фокуса btnResetTab.Focus(); }
//Открытие картинки из файла private void menuStripItemFile_Open_Click(object sender, EventArgs e) { cancelDrawing(); if (openFileDialog.ShowDialog() == DialogResult.Cancel) { return; } // получаем выбранный файл string filename = openFileDialog.FileName; cDrawField.Image = Image.FromFile(filename); var currPicture = new Bitmap(Math.Max(cDrawField.Image.Width, cDrawField.Width), Math.Max(cDrawField.Image.Height, cDrawField.Height)); picturesCounter++; currPicture = (Bitmap)cDrawField.Image; pictures[picturesCounter] = currPicture; graphics = Graphics.FromImage(cDrawField.Image); var tab = new RadioButton(); tabsPanel.Controls.Add(tab); tab.Appearance = Appearance.Button; tab.Checked = true; tab.Width = 150; tab.Height = 26; tab.Margin = new Padding(0, 1, 10, 1); tab.Name = "tabBtn" + picturesCounter; tab.Text = filename; tabButtons[picturesCounter] = tab; tab.Click += tabOnClick; activeTab = picturesCounter; cDrawField.Refresh(); tabShapesList[picturesCounter] = new ShapesList(); //Сброс фокуса btnResetTab.Focus(); }