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 }
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 }