Beispiel #1
0
 //Cette fonction permet de savoir si une sommet donné possède une ou plusieurs intersections avec un autre, et de le renvoyer.
 private Vertex CheckWhoIntersects(Vertex vertex)
 {
     foreach (Vertex v in vertexes)
     {
         if (v.Intersects(vertex) && v != vertex)
         {
             return v;
         }
     }
     return null;
 }
Beispiel #2
0
 public bool Intersects(Vertex other)
 {
     return new Rectangle(Location.X - Size.Width / 2, Location.Y - Size.Height / 2, Size.Width, Size.Height).IntersectsWith(new Rectangle(other.Location.X - Size.Width / 2, other.Location.Y - Size.Height / 2, other.Size.Width, other.Size.Height));
 }
Beispiel #3
0
 /*FONCTIONS_DES_SOMMETS****************************************/
 //Cette fonction permet d'ajouter le sommet donné au graphe.
 private void AddVertex(Vertex vertex)
 {
     vertexes.Add(vertex);
     mainPanel.Refresh();
 }
Beispiel #4
0
 //Cette fonction permet de libérer le sommet sélectionné (s'il existe).
 private void ReleaseHoveredVertex()
 {
     if (hoveredVertex != null)
     {
         hoveredVertex.Color = hoveredVertex.TrueColor;
         hoveredVertex = null;
         mainPanel.Refresh();
     }
 }
Beispiel #5
0
        //Cette fonction permet de sélectionner le sommet donné, et déselectionner l'ancien (s'il existe).
        private void SelectVertex(Vertex other, MouseButtons button)
        {
            if (selectedVertex != null)
            {
                selectedVertex.Color = selectedVertex.TrueColor;
            }
            selectedVertex = other;
            selectedVertex.Color = Vertex.selectedColor;
            OpenSelectedVertexProperties();

            if (button == MouseButtons.Left)
            {
                grabbedVertex = selectedVertex;
            }

            textBoxName.Enabled = true;
            numericUpDownLocationX.Enabled = true;
            numericUpDownLocationY.Enabled = true;
            numericUpDownSizeWidth.Enabled = true;
            numericUpDownSizeHeight.Enabled = true;
            numericUpDownWidth.Enabled = true;
            labelBoxColor.Enabled = true;
            mainPanel.Refresh();
        }
Beispiel #6
0
 //Cette fonction permet de lâcher le sommet qui a été attrapé.
 private void ReleaseGrabbedVertex()
 {
     grabbedVertex = null;
     mainPanel.Refresh();
 }
Beispiel #7
0
 //Cette fonction permet de changer la couleur du sommet donné (celui qui est survolé par la souris, s'il existe).
 private void HoverVertex(Vertex nextHoveredVertex)
 {
     if (hoveredVertex != null)
     {
         if (hoveredVertex != selectedVertex)
         {
             hoveredVertex.Color = hoveredVertex.TrueColor;
         }
     }
     hoveredVertex = nextHoveredVertex;
     if (hoveredVertex != selectedVertex)
     {
         hoveredVertex.Color = Vertex.hoveredColor;
     }
     mainPanel.Refresh();
 }
Beispiel #8
0
        //Cette fonction permet de sélectionner le sommet donné, et déselectionner l'ancien (s'il existe).
        private void SelectVertex(Vertex other, MouseButtons button)
        {
            if (selectedVertex != null)
            {
                selectedVertex.Color = selectedVertex.TrueColor;
            }
            selectedVertex = other;
            selectedVertex.Color = Vertex.selectedColor;
            OpenSelectedVertexProperties();

            if (button == MouseButtons.Left)
            {
                grabbedVertex = selectedVertex;
            }
            mainPanel.Refresh();
        }
Beispiel #9
0
        private void mainPanel_MouseDown(object sender, MouseEventArgs e)
        {
            Vertex vertex = new Vertex(e.Location);
            Vertex other = CheckWhoIntersects(vertex);

            if (other == null)
            {
                AddVertex(vertex);
            }
            else
            {
                SelectVertex(other, e.Button);

                if(e.Button == MouseButtons.Right)
                {
                    if (temporaryEdge == null)
                    {
                        WaitForEdgePlacement(e.Location);
                    }
                    else
                    {
                        AddEdge(e.Location);
                    }
                }
            }
        }
Beispiel #10
0
 public Edge(Vertex s, Vertex d)
     : base(defaultWidth, defaultColor, defaultColor)
 {
     Source = s;
     Destination = d;
 }