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; } }
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(); }); }
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 }