Пример #1
0
        private void TracerDroit(int pElement)
        {
            var dernierTrait = Dessin.ElementAt(pElement) as Trait;

            //Vertical
            if (dernierTrait.Fin.X > (dernierTrait.Depart.X - Constantes.MARGE_TRAIT_DROIT) && dernierTrait.Fin.X < (dernierTrait.Depart.X + Constantes.MARGE_TRAIT_DROIT))
            {
                dernierTrait.Fin = new Point(dernierTrait.Depart.X, dernierTrait.Fin.Y);
                Cursor.Position  = new Point(dernierTrait.Depart.X + EcartX, Cursor.Position.Y);
            }

            //Horizontal
            if (dernierTrait.Fin.Y < (dernierTrait.Depart.Y + Constantes.MARGE_TRAIT_DROIT) && dernierTrait.Fin.Y > (dernierTrait.Depart.Y - Constantes.MARGE_TRAIT_DROIT))
            {
                dernierTrait.Fin = new Point(dernierTrait.Fin.X, dernierTrait.Depart.Y);
                Cursor.Position  = new Point(Cursor.Position.X, dernierTrait.Depart.Y + EcartY);
            }

            pnlBoard.Invalidate(); //modif refresh to invalidate
        }
Пример #2
0
        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
        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
        }