//Создание условной вершины. private void buttonCreateCondition_Click(object sender, EventArgs e) { //Свойства добавляемого объекта. int id = countID; int type = TYPE_OBJECT.VERTEX; Point[] aPointObject = new Point[5] { new Point(35, 0), new Point(70, 15), new Point(35, 30), new Point(0, 15), new Point(35, 0) }; Point pointText = new Point(20, 3); string text = comboBoxCondition.Text; //Текст вершины. TextGraph textVertex = new TextGraph(0, TYPE_OBJECT.TEXT, pointText, text); textVertex.setVisibleContour(false); textVertex.setVisibleBrush(false); //Создание вершины. VertexGraph vertex = new VertexGraph(id, type, aPointObject, textVertex); vertex.setColorBrush(colorEmpty); vertex.setReactOutputPlaceOnCursor(false); //Добавление мест для линий. vertex.addPlaceInputLine(new PlaceForLine(0, TYPE_OBJECT.PLACE_FOR_LINE, vertex, new Point(35, 0), new Size(8, 8))); //Место для соединения линии сверху. vertex.addPlaceOutputLine(new PlaceForLine(0, TYPE_OBJECT.PLACE_FOR_LINE, vertex, new Point(70, 15), new Size(8, 8))); //Место для вывода линии справа. vertex.addPlaceOutputLine(new PlaceForLine(1, TYPE_OBJECT.PLACE_FOR_LINE, vertex, new Point(35, 30), new Size(8, 8))); //Место для вывода линии снизу. vertex.addPlaceOutputLine(new PlaceForLine(2, TYPE_OBJECT.PLACE_FOR_LINE, vertex, new Point(0, 15), new Size(8, 8))); //Место для вывода линии слева. //Добавление объекта в буфер созданного объекта, но еще не добавленного. bufferCreatedVertex = vertex; }
//Отжатие мыши. private void pictureBoxGraph_MouseUp(object sender, MouseEventArgs e) { //Если производилось перемещение объекта, то завершаем перемещение. if (moveVertex.getEventFlag() == true) { originalBitmap = (Bitmap)moveVertex.finish().Clone(); //Завершение перемещения с отображением на холсте. pictureBoxGraph.Image = originalBitmap; //Отображение изменения на экране. detectorObject.setOriginalBitmap(originalBitmap); //Загрузка нового холста в распознаватель объектов. } //Если производилось построение линии, то завершаем и проверяем построенный переход. else if (constructorLine.getEventFlag() == true) { LineGraph transition = constructorLine.getBufferLine(); //Получение построенной линии. ObjectGraph objectFrom = transition.getObjectFrom(); //Получение объекта, из которого выходит линия. //Если линия выходит из логического условия, то добавляем текст. if (isCondition(objectFrom) == true) { if (transition.getText() == null) { TextGraph textGraph = new TextGraph(0, TYPE_OBJECT.TEXT, getPointTextLine((VertexGraph)objectFrom, (PlaceForLine)detectorObject.getBufferObject()), getTextLine((VertexGraph)objectFrom)); textGraph.setVisibleBrush(false); textGraph.setVisibleContour(false); textGraph.setObject(transition); //Привязка линии к тексту. transition.setText(textGraph); //Привязка текста к линии. } } originalBitmap = (Bitmap)constructorLine.finish().Clone(); //Завершение построения линии с отображением. checkingTransiton(transition); //Проверка построенного перехода на корректность. detectorObject.setOriginalBitmap(originalBitmap); //Загрузка нового холста в распознаватель объектов. pictureBoxGraph.Image = originalBitmap; //Отображение изменения на экране. } //Сброс флага зажатой клавиши мыши. mousePress = false; }