RGBLHistogramUserControl.cs
Description du code
RGBLHistogramUserControl.cs est un fichier du projet PhotoBrol.Ce fichier est situé dans /var/www/bin/sniplets/bibliobrol/photobrol/.
Projet PhotoBrol :
Editeur d'images en CSharp.
Code source ou contenu du fichier
Code c# (RGBLHistogramUserControl.cs) (202 lignes)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; using be.gaudry.photobrol.view.controls.histogram; using be.gaudry.photobrol.model.image; namespace be.gaudry.photobrol.view.controls { public partial class RGBLHistogramUserControl : UserControl { private ImageStatistics stat; private be.gaudry.model.math.Histogram redMHistogram, greenMHistogram, blueMHistogram; public RGBLHistogramUserControl() { redMHistogram = null; greenMHistogram = null; blueMHistogram = null; InitializeComponent(); } // Gather image statistics public void GatherStatistics(Bitmap image) { // avoid calculation in the case of the same image /*if (image != null) { if (currentImageHash == image.GetHashCode()) return; currentImageHash = image.GetHashCode(); }*/ System.Console.WriteLine("set stats"); redGB.Visible = false; greenGB.Visible = false; blueGB.Visible = false; // busy Capture = true; Cursor = Cursors.WaitCursor; // get statistics // free Cursor = Cursors.Arrow; Capture = false; if (stat != null) { redGB.Visible = (!stat.IsGrayscale); greenGB.Visible = redGB.Visible; blueGB.Visible = redGB.Visible; displayHistogram(); } /*else { redHistogram.Values = null; greenMHistogram = null; blueMHistogram = null; redMeanLabel.Text = String.Empty; redStdDevLabel.Text = String.Empty; redMedianLabel.Text = String.Empty; redMinLabel.Text = String.Empty; redMaxLabel.Text = String.Empty; greenMeanLabel.Text = String.Empty; greenStdDevLabel.Text = String.Empty; greenMedianLabel.Text = String.Empty; greenMinLabel.Text = String.Empty; greenMaxLabel.Text = String.Empty; blueMeanLabel.Text = String.Empty; blueStdDevLabel.Text = String.Empty; blueMedianLabel.Text = String.Empty; blueMinLabel.Text = String.Empty; blueMaxLabel.Text = String.Empty; levelLabel.Text = String.Empty; countLabel.Text = String.Empty; percentileLabel.Text = String.Empty; }*/ } private void displayHistogram() { if (!stat.IsGrayscale) { redGB.Text = "Rouge"; redHistogram.Color = Color.Red; redMHistogram = stat.Red; greenMHistogram = stat.Green; blueMHistogram = stat.Blue; redGB.Visible = true; greenGB.Visible = true; blueGB.Visible = true; } else { redGB.Text = "Gris"; redHistogram.Color = Color.Gray; redMHistogram = stat.Gray; redGB.Visible = true; } if (redMHistogram != null) { redHistogram.Values = redMHistogram.Values; redMeanLabel.Text = redMHistogram.Mean.ToString("F2"); redStdDevLabel.Text = redMHistogram.StdDev.ToString("F2"); redMedianLabel.Text = redMHistogram.Median.ToString(); redMinLabel.Text = redMHistogram.Min.ToString(); redMaxLabel.Text = redMHistogram.Max.ToString(); } if (greenMHistogram != null) { greenHistogram.Values = greenMHistogram.Values; greenMeanLabel.Text = greenMHistogram.Mean.ToString("F2"); greenStdDevLabel.Text = greenMHistogram.StdDev.ToString("F2"); greenMedianLabel.Text = greenMHistogram.Median.ToString(); greenMinLabel.Text = greenMHistogram.Min.ToString(); greenMaxLabel.Text = greenMHistogram.Max.ToString(); } if (blueMHistogram != null) { blueHistogram.Values = blueMHistogram.Values; blueMeanLabel.Text = blueMHistogram.Mean.ToString("F2"); blueStdDevLabel.Text = blueMHistogram.StdDev.ToString("F2"); blueMedianLabel.Text = blueMHistogram.Median.ToString(); blueMinLabel.Text = blueMHistogram.Min.ToString(); blueMaxLabel.Text = blueMHistogram.Max.ToString(); } } // Cursor position changed over the histogram private void histogram_PositionChanged(object sender, HistogramEventArgs e) { int pos = e.Position; if (pos != -1) { levelLabel.Text = pos.ToString(); if (pos < redMHistogram.Values.Length) countLabel.Text = redMHistogram.Values[pos].ToString(); percentileLabel.Text = ((float)redMHistogram.Values[pos] * 100 / stat.PixelsCount).ToString("F2"); } else { levelLabel.Text = ""; countLabel.Text = ""; percentileLabel.Text = ""; } } // Selection changed in the histogram private void histogram_SelectionChanged(object sender, HistogramEventArgs e) { int min = e.Min; int max = e.Max; int count = 0; levelLabel.Text = min.ToString() + "..." + max.ToString(); // count pixels for (int i = min; i <= max; i++) { count += redMHistogram.Values[i]; } countLabel.Text = count.ToString(); percentileLabel.Text = ((float)count * 100 / stat.PixelsCount).ToString("F2"); } // On "Log" check - switch mode private void logCheck_CheckedChanged(object sender, System.EventArgs e) { } private void histogram_MouseEnter(object sender, EventArgs e) { //System.Console.WriteLine("sender : " + ((Histogram.Histogram)sender).Name); colorLbl.BackColor = ((histogram.Histogram)sender).Color; mouseOverInfoLbl.Visible = false; } private void histogram_MouseLeave(object sender, EventArgs e) { mouseOverInfoLbl.Visible = true; colorLbl.BackColor = infosGB.BackColor; } } }
Structure et Fichiers du projet
Afficher/masquer...Icône | Nom | Taille | Modification |
Icône | Nom | Taille | Modification |
| _ | Répertoire parent | 0 octets | 1734890766 22/12/2024 19:06:06 |
| _ | histogram | 0 octets | 1541007196 31/10/2018 18:33:16 |
Utilisation de l'explorateur de code
- Navigation :
- Un clic sur une icône de répertoire ouvre ce répertoire pour en afficher les fichiers.
- Lorsque le répertoire en cours ne contient pas de sous-répertoires il est possible de remonter vers le répertoire parent.
- La structure de répertoires en treetable (tableau en forme d'arborescence) n'est plus possibledans cette version.
- Un clic sur une icône de fichier ouvre ce fichier pour en afficher le code avec la coloration syntaxique adaptée en fonction du langage principal utilisé dans le fichier.
- Affichage :
- Il est possible de trier les répertoires ou les fichiers selon certains critères (nom, taille, date).
- Actions :
- Les actions possible sur les fichiers dépendent de vos droits d'utilisateur sur le site. Veuillez activer le mode utilisateur pour activer les actions.
Version en cache
22/12/2024 19:06:06 Cette version de la page est en cache (à la date du 22/12/2024 19:06:06) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/10/2009, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/cs-photobrol-source-rf-view/controls/RGBLHistogramUserControl.cs.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.