コード例 #1
0
ファイル: Main.cs プロジェクト: lbouvard/NetworkDesigner
        private void pnlBoard_MouseDown(object sender, MouseEventArgs e)
        {
            var nbItemSelectionne = Dessin.Where(i => i.EstSelectionne).Count();
            var itemEnCours       = Dessin.Where(i => i.EstSelectionne && i is Trait && i.HitTest(e.Location)).FirstOrDefault();

            if (nbItemSelectionne == 0 || itemEnCours == null)
            {
                return;
            }

            _maitre = itemEnCours;

            if (nbItemSelectionne == 1)
            {
                //Dimensionnement ?
                if (itemEnCours.SelectionnerExtremite(e.Location) != Constantes.PosRedim.Aucune)
                {
                    RedimEnCours = itemEnCours.SelectionnerExtremite(e.Location);
                    RedimensionnementAutorise = true;
                }
                //Déplacement
                else
                {
                    _positionSouris     = e.Location;
                    DeplacementAutorise = true;
                }
            }
            else
            {
                //Déplacement
                _positionSouris     = e.Location;
                DeplacementAutorise = true;
            }
        }
コード例 #2
0
ファイル: Main.cs プロジェクト: lbouvard/NetworkDesigner
        private async void pnlBoard_Move(object sender, MouseEventArgs e)
        {
            UpdateUI(e.Location.X, e.Location.Y);

            await Task.Run(() =>
            {
                #region TRACE
                if (TraceEnCours)
                {
                    var item = Dessin.ElementAt(ItemEnCours) as Trait;
                    item.Fin = e.Location;
                }
                #endregion

                #region DEPLACEMENT
                if (DeplacementAutorise)
                {
                    // Valeur de déplacement
                    int dx = e.Location.X - _positionSouris.X;
                    int dy = e.Location.Y - _positionSouris.Y;

                    // Nouvelle position souris
                    _positionSouris = e.Location;

                    // Déplace tous les élements selectionnés
                    var items = Dessin.Where(i => i.EstSelectionne).ToList();

                    foreach (var item in items)
                    {
                        item.Translater(dx, dy);
                    }
                }
                #endregion

                #region REDIMENSIONNEMENT
                if (RedimensionnementAutorise)
                {
                    // Trait
                    if (_maitre is Trait)
                    {
                        var item = _maitre as Trait;
                        // Horizontal
                        if (item.Depart.Y == item.Fin.Y)
                        {
                            if (RedimEnCours == Constantes.PosRedim.TraitDebut)
                            {
                                item.Depart = new Point(e.Location.X, item.Depart.Y);
                            }
                            else
                            {
                                item.Fin = new Point(e.Location.X, item.Fin.Y);
                            }
                        }
                        //Trait vertical
                        else
                        {
                            if (RedimEnCours == Constantes.PosRedim.TraitDebut)
                            {
                                item.Depart = new Point(item.Depart.X, e.Location.Y);
                            }
                            else
                            {
                                item.Fin = new Point(item.Fin.X, e.Location.Y);
                            }
                        }
                    }
                    // Equipement
                    else
                    {
                    }
                }
                #endregion

                // Mise à jour de l'affichage
                pnlBoard.Invalidate();
            });
        }
コード例 #3
0
ファイル: Main.cs プロジェクト: lbouvard/NetworkDesigner
        private void pnlBoard_Click(object sender, MouseEventArgs e)
        {
            #region Trace d'un trait
            if (OutilEnCours == Outils.Trait)
            {
                NbClic++;

                var trait = new Trait(string.Format("Trait{0}", Dessin.Where(i => i is Trait).Count() + 1), e.Location, new Point(), ((Couleur)cmbCouleur.SelectedItem).Valeur, (float)nudLargeur.Value);

                if (NbClic == 1)
                {
                    TraceEnCours = true;
                }
                else
                {
                    TraceEnCours = false;

                    TracerDroit(ItemEnCours);

                    var traitEnCours = Dessin.ElementAt(ItemEnCours) as Trait;
                    trait.Depart = new Point(traitEnCours.Fin.X - (int)(nudLargeur.Value / 2), traitEnCours.Fin.Y);

                    TraceEnCours = true;
                }

                Dessin.Add(trait);
                ItemEnCours++;
            }
            #endregion

            #region Selection
            if (OutilEnCours == Outils.Main && !DeplacementAutorise && !RedimensionnementAutorise)
            {
                foreach (var item in Dessin)
                {
                    if (Ajout)
                    {
                        if (item.HitTest(e.Location))
                        {
                            if (item.EstSelectionne)
                            {
                                item.EstSelectionne = false;
                                item.CouleurLigne   = ((Couleur)cmbCouleur.SelectedItem).Valeur;
                            }
                            else
                            {
                                item.EstSelectionne = true;
                                item.CouleurLigne   = Color.Red;
                            }
                        }
                    }
                    else
                    {
                        if (item.HitTest(e.Location))
                        {
                            item.CouleurLigne   = Color.Red;
                            item.EstSelectionne = true;
                        }
                        else
                        {
                            item.CouleurLigne   = ((Couleur)cmbCouleur.SelectedItem).Valeur;
                            item.EstSelectionne = false;
                        }
                    }
                }

                pnlBoard.Invalidate();
            }
            #endregion

            #region Trace Equipement
            if (OutilEnCours == Outils.Case)
            {
                var width  = int.Parse(txtWidth.Text);
                var height = int.Parse(txtHeight.Text);

                var equipement = new Equipement(
                    string.Format("Rectangle{0}", Dessin.Where(i => i is Equipement).Count() + 1),
                    new Point(e.Location.X - (width / 2), e.Location.Y - (height / 2)),
                    width,
                    height,
                    ((Couleur)cmbCouleur.SelectedItem).Valeur,
                    (float)nudLargeur.Value
                    );

                Dessin.Add(equipement);
                ItemEnCours++;

                pnlBoard.Invalidate();
            }
            #endregion
        }