private void button1_Click_1(object sender, EventArgs e) { while (Shapes_list.SelectedIndices.Count > 0) { Shapes.RemoveAt(Shapes_list.SelectedIndices[0]); Shapes_list.Items.RemoveAt(Shapes_list.SelectedIndices[0]); } button1.Enabled = false; TempShape = null; this.Refresh(); }
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { if ((rb_line.Checked) && (IsShapeStart == false)) { TempShape = new Line(Shape_start, e.Location); } else if ((rb_circle.Checked) && (IsShapeStart == false)) { TempShape = new Circle(Shape_start, e.Location); } pictureBox1.Refresh(); }
private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { if (rb_cross.Checked) { TempShape = new Cross(e.Location); } else if (rb_circle.Checked) { Shape_start = e.Location; TempShape = new Circle(Shape_start, Shape_start); } else if (rb_line.Checked) { Shape_start = e.Location; TempShape = new Line(Shape_start, Shape_start); } IsShapeStart = false; pictureBox1.Refresh(); }
private void Form1_MouseDown(object sender, MouseEventArgs e) { switch (Figures) // Выбор между фигурами, которые можно нарисовать { case rdB_Positions.cross: // Просто тыкает крест flagStart = false; // Флаг начатой фигуры в неправду. Он нам не нужен в этом действии addShape(tmpShape); // Добавление новой фигуры на экран из мнимой tmpShape = null; break; case rdB_Positions.line: // Теперь разберемся с линией if (!flagStart) // Если только начали рисовать линию { lineStart = e.Location; // Запоминаем куда ткнули flagStart = true; // Выставили флаг в позицию "тянем линию" } else // Приходим сюда если уже закончили тянуть линию { addShape(tmpShape); // Опять же добавляем фигуру flagStart = false; // Флаг ставим как было tmpShape = null; } break; case rdB_Positions.circle: // Следующий шаг - круг if (!flagStart) // Всё точно так же. Смотрим на флаг { CircleCenter = e.Location; // Теперь запоминаем куда ткнули flagStart = true; // Флаг на старт! } else { addShape(tmpShape); // Рисуем flagStart = false; // Флаг возвращаем на место tmpShape = null; } break; } this.Refresh(); // Обновляем. }
private void addShape(Shape shape) { Shapes.Add(shape); // Добавление фигуры на экран shapesList.Items.Add(shape.DescriptionString); // Вызов функции, которая добавляет координаты фигуры в лист }
private void очиститьВсёToolStripMenuItem_Click(object sender, EventArgs e) { Shapes.Clear(); // Тут, из выпадающего списка, можно очистить всё. Функции все банальны. shapesList.ClearSelected(); shapesList.Items.Clear(); flagStart = false; tmpShape = null; Refresh(); }
private void открытьToolStripMenuItem_Click(object sender, EventArgs e) { // А тут загружаем. Немного похитрее, чем сохранения, но тоже всё просто. string curFile = "file.txt"; // Имя файла для записи if (openFileDialog1.ShowDialog() == DialogResult.OK) // Выбрать файл вручную { curFile = openFileDialog1.FileName; Shapes.Clear(); // Очищение экрана shapesList.ClearSelected(); shapesList.Items.Clear(); flagStart = false; tmpShape = null; Refresh(); StreamReader sr = new StreamReader(curFile); while (!sr.EndOfStream) { string type = sr.ReadLine(); flagStart = false; switch (type) { case "Cross": Shapes.Add(new Cross(sr)); break; case "Line": Shapes.Add(new Line(sr)); break; case "Circle": Shapes.Add(new Circle(sr)); break; } } sr.Close(); Refresh(); } }
private void rdButt_Lines_CheckedChanged(object sender, EventArgs e) { Figures = rdB_Positions.line; // Тут то же самое, только с линиями tmpShape = null; // Сбрасываем мнимую фигуру flagStart = false; Refresh(); // И обновляем }
private void rdButt_Cross_CheckedChanged(object sender, EventArgs e) { Figures = rdB_Positions.cross; // Тут всё просто - если втыкаешь радиокнопку с крестом - втыкаем крест. tmpShape = null; // Сбрасываем мнимую фигуру flagStart = false; Refresh(); // И обновляем }
private void rdButt_Circle_CheckedChanged(object sender, EventArgs e) { Figures = rdB_Positions.circle; // А вот и наш потерявшийся радиобаттон с кругом. Выше всё более чем подробно расписано. tmpShape = null; flagStart = false; Refresh(); }
private void AddShape(Shape s) { Shapes.Add(s); Shapes_list.Items.Add(s.ConfString); }
private void Form1_MouseLeave(object sender, EventArgs e) { tmpShape = null; Refresh(); }
private void AddShape(Shape s) { Shapes.Add(s); }
private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { if (TempShape.MayDraw) { AddShape(TempShape); } TempShape = null; pictureBox1.Refresh(); IsShapeStart = true; }
// Что происходит при перемещении мышки? private void Form1_MouseMove(object sender, MouseEventArgs e) { switch (Figures) // Смотрим, какая же у нас фигура выбрана { case rdB_Positions.cross: // Это крест! tmpShape = new Cross(e.Location); // Фигарим мнимый крест! Refresh(); // Обновляем, чтоб было видно. break; case rdB_Positions.line: // Нет, это линия! if (!flagStart) // Если первая точка только ставится, запоминаем эту точку { lineStart = e.Location; Refresh(); } else // Если же уже стоит, рисуем мнимую линию от точки, которую мы запомнили, до курсора мыши { tmpShape = new Line(lineStart, e.Location); Refresh(); } break; case rdB_Positions.circle: // Нет, это круг! if (!flagStart) // Тут такая-же канитель, как с линией, только тут уже рисуем круг. { CircleCenter = e.Location; Refresh(); } else { tmpShape = new Circle(CircleCenter, e.Location); Refresh(); } break; } }
// // event handlers // private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { if (mode == Mode.IDLE) { rb = get_shape(cmd); rb.coodinate.Add(new Point(e.X, e.Y)); // begin rb.coodinate.Add(new Point(e.X, e.Y)); // begin mode = Mode.BEGIN; } }
private void создатьToolStripMenuItem_Click(object sender, EventArgs e) { Shapes.Clear(); TempShape = null; Shapes_list.Items.Clear(); pictureBox1.Refresh(); }