public CompareIndicWindow() { InitializeComponent(); typeComparaison = TypeComp.Add; cbSelectModeComp.Items.Add("Addition"); cbSelectModeComp.Items.Add("Soustraction"); cbSelectModeComp.Items.Add("Moyenne"); cbSelectModeComp.SelectedIndex = 0; }
/// <summary> /// Méthode qui permet de comparer les taux de deux indicateurs /// </summary> /// <param name="type">Type de comparaison</param> public void compareAllerRetour(TypeComp type) { // Création du nouvel indicateur de comparaison IndicateurAllerRetour resultat = new IndicateurAllerRetour(fusionUsers(this, IndicCompare), fusionOrdres(this, IndicCompare), fusionPA(this, IndicCompare), fusionS(this, IndicCompare), fusionGroupes(this, IndicCompare)); // On cherche à comparer les deux dictionnaires Dictionary<ImageExp, List<double>> dico = new Dictionary<ImageExp,List<double>>(); // On remplit le dictionnaire avec les données du premier indicateur foreach (ImageExp img in this.Data.Keys) { if (dico.ContainsKey(img)) { dico[img].Add(this.Data[img]); } else { dico.Add(img, new List<double>()); dico[img].Add(this.Data[img]); } } // On remplit le dictionnaire avec les données du second indicateur foreach (ImageExp img in IndicCompare.Data.Keys) { if (dico.ContainsKey(img)) { dico[img].Add(IndicCompare.Data[img]); } else { dico.Add(img, new List<double>()); dico[img].Add(IndicCompare.Data[img]); } } //Puis on procède à la comparaison voulue // Ne pas oublier de remplir le dico de l'indicateur à chaque étape if (type == TypeComp.Add) { resultat.Data = additionner(dico); } else if (type == TypeComp.Sous) { resultat.Data = soustraire(dico); } else { resultat.Data = moyenner(dico); } DataComparaison.Add(this.Data); DataComparaison.Add(IndicCompare.Data); DataComparaison.Add(resultat.Data); }
private void btnCreateCompareIndic_Click(object sender, RoutedEventArgs e) { Indicateur indSel1 = cbSelectIndic1.SelectedItem as Indicateur; Indicateur indSel2 = cbSelectIndic2.SelectedItem as Indicateur; typeComparaison = AppData.convertStringToTypeComp(cbSelectModeComp.SelectedItem as string); /* Méthodologie de la création de comparaison : * On cast les deux indicateurs vers le type d'indicateur voulu * On définit l'indicateur comparé au second indicateur pour le premier indicateur * On appelle la méthode de comparaison du premier indicateur * On ajoute l'indicateur 1 à la liste des indicateurs comparateurs * On génère l'UC de l'indicateur comparateur */ if (indSel1 != null && indSel2 != null) { if (indSel1 is IndicateurTauxRecouvrement) // Taux recouvrement { Dictionary<ImageExp, double> dicoCompare = new Dictionary<ImageExp, double>(); IndicateurTauxRecouvrement indTR1 = indSel1 as IndicateurTauxRecouvrement; IndicateurTauxRecouvrement indTR2 = indSel2 as IndicateurTauxRecouvrement; indTR1.IndicCompare = indTR2; indTR1.compareTaux(typeComparaison); AppData.ComparateursTauxRecouvrement.Add(indTR1); CompTauxRecouvrementUC compTauxRecouvrement = new CompTauxRecouvrementUC(); } else if (indSel1 is IndicateurDensiteRecouvrement) // Densité de recouvrement { Dictionary<ImageExp, double[,]> dicoCompare = new Dictionary<ImageExp, double[,]>(); IndicateurDensiteRecouvrement indTR1 = indSel1 as IndicateurDensiteRecouvrement; IndicateurDensiteRecouvrement indTR2 = indSel2 as IndicateurDensiteRecouvrement; indTR1.IndicCompare = indTR2; indTR1.compareDensite(typeComparaison); AppData.ComparateursDensiteRecouvrement.Add(indTR1); CompDensiteRecouvrementUC compDispersionPA = new CompDensiteRecouvrementUC("gris"); } else if (indSel1 is IndicateurDispersionPA) // Dispersion PA { Dictionary<ImageExp, double> dicoCompare = new Dictionary<ImageExp, double>(); IndicateurDispersionPA indTR1 = indSel1 as IndicateurDispersionPA; IndicateurDispersionPA indTR2 = indSel2 as IndicateurDispersionPA; indTR1.IndicCompare = indTR2; indTR1.compareDispersion(typeComparaison); AppData.ComparateursDispersionPA.Add(indTR1); CompDispersionPAUC compDispersionPA = new CompDispersionPAUC(); } else if (indSel1 is IndicateurAllerRetour) // Aller Retour { Dictionary<ImageExp, double> dicoCompare = new Dictionary<ImageExp, double>(); IndicateurAllerRetour indTR1 = indSel1 as IndicateurAllerRetour; IndicateurAllerRetour indTR2 = indSel2 as IndicateurAllerRetour; indTR1.IndicCompare = indTR2; indTR1.compareAllerRetour(typeComparaison); AppData.ComparateursAllerRetour.Add(indTR1); CompAllerRetourUC compDispersionPA = new CompAllerRetourUC(); } } else { MessageBox.Show("Veuillez sélectionner correctement les indicateurs", "Erreur", MessageBoxButton.OK, MessageBoxImage.Error); } }