//************************************************************************************************
        // Создание и добавление линии.
        //************************************************************************************************

        //Создание линии.
        public LineGraph createLine(PlaceForLine placeFrom)
        {
            //Параметры добавляемой линии.
            int         id         = countID;
            int         type       = TYPE_OBJECT.LINE;;
            ObjectGraph objectFrom = placeFrom.getObject();
            Point       startPoint = new Point(placeFrom.getPointForLine().X, placeFrom.getPointForLine().Y);

            //Создание линии.
            LineGraph lineGraph = new LineGraph(id, type, objectFrom, startPoint, null, new Size(8, 8));

            //Добавление линии в список объектов.
            aObjectGraph.Add(lineGraph);

            //Привязка линии к объекту.
            placeFrom.setLine(lineGraph, true);                     //Присоединение линии к месту.
            placeFrom.setLocked(true);                              //Место занято.
            placeFrom.setColorContour(Color.Black);                 //Снятие выделения места.

            return(lineGraph);
        }
        //Определение положения текста линии.
        private Point getPointTextLine(VertexGraph vertexFrom, PlaceForLine placeFrom)
        {
            //Если условная вершина то выбор положения текста относительно места для вывода линии.
            if (isCondition(vertexFrom) == true)
            {
                Point pointPlace = placeFrom.getPointArea();
                switch (placeFrom.getID())
                {
                case 0: return(new Point(pointPlace.X + placeFrom.getSizeArea().Width, pointPlace.Y - 20));             //Справа.

                case 1: return(new Point(pointPlace.X + 5, pointPlace.Y));                                              //Снизу.

                case 2: return(new Point(pointPlace.X - 3, pointPlace.Y - 20));                                         //Слева.

                default: return(new Point(0, 0));
                }
            }
            else
            {
                return(new Point(0, 0));
            }
        }
        //Нажатие мыши.
        private void pictureBoxGraph_MouseDown(object sender, MouseEventArgs e)
        {
            Point       cursor       = new Point(e.X, e.Y);
            ObjectGraph bufferObject = detectorObject.getBufferObject();

            //Нажатие клавиши для выбора начального места для вершины.
            if (bufferCreatedVertex != null)
            {
                addVertex();
            }

            //Если кнопка нажата на объекте.
            if (bufferObject != null)
            {
                switch (bufferObject.getType())
                {
                /////////////////////////////////////////////////////////////////////////////////////////////////
                //Удаление сегмента линии.
                case TYPE_OBJECT.LINE: {
                    LineGraph line = (LineGraph)bufferObject;                      //Приведение типов.
                    if (line.getObjectFrom() != null)
                    {
                        if (line.getObjectFrom().getType() == TYPE_OBJECT.VERTEX)
                        {
                            VertexGraph vertexFrom = (VertexGraph)(line.getObjectFrom());                            //Получение вершины, из которой выходила линия.
                            checkingDeletedTransition(line);                                                         //Проверка удаленного разорванного пути.
                            originalBitmap        = constructorLine.deleteSegmentLine(line, originalBitmap, cursor); //Удаление сегментов линии с отображенеим на холсте.
                            pictureBoxGraph.Image = originalBitmap;                                                  //Отображение изменения на холсте.
                            detectorObject.setOriginalBitmap(originalBitmap);                                        //В распознаватель объектов посылаем новый холст.
                            this.Cursor = Cursors.Default;                                                           //Изменение курсора мыши на обычный.
                                                                                                                     //Проверяем необходимость разблокировки заблокированного 3 места.
                            if (isCondition(vertexFrom) == true)
                            {
                                checkUnLockPlaceFromCondition(vertexFrom);
                            }
                        }
                    }
                    break;
                }

                /////////////////////////////////////////////////////////////////////////////////////////////////
                //Построение линии.
                case TYPE_OBJECT.PLACE_FOR_LINE: {
                    PlaceForLine place = (PlaceForLine)detectorObject.getBufferObject();
                    //Если место для линии принадлежит линии, то продолжаем линию.
                    if (place.getObject().getType() == TYPE_OBJECT.LINE)
                    {
                        pictureBoxGraph.Image = constructorLine.preparation((LineGraph)place.getObject(), originalBitmap);
                    }
                    //Если место для линии не принадлежит линии, то создаем новую линию.
                    else
                    {
                        detectorObject.getBufferObject().setColorContour(Color.Black);        //Снимаем выделение у места для вывода линии.
                        pictureBoxGraph.Image = constructorLine.preparation(createLine(place), originalBitmap);
                        //Проверяем необходимость блокировки 3 места, если это условие.
                        if (isCondition(place.getObject()) == true)
                        {
                            checkLockPlaceFromCondition((VertexGraph)place.getObject());
                        }
                        countID++;        //Увеличиваем индекс первого свободного идентификатора.
                    }

                    break;
                }

                /////////////////////////////////////////////////////////////////////////////////////////////////
                //Перемещение объекта.
                default: {
                    pictureBoxGraph.Image = moveVertex.preparation(detectorObject.getBufferObject(), detectorObject.getDrawBitmap(), cursor);
                    break;
                }
                    /////////////////////////////////////////////////////////////////////////////////////////////////
                }
            }

            //Установка флага зажатой клавиши мыши.
            mousePress = true;
        }