GDI+ - Interface de périphérique graphique de nouvelle génération
Toutes les applications d'interface utilisateur graphique (GUI) interagissent avec des périphériques matériels (moniteurs, imprimantes, scanners), qui peuvent être représentés sous forme de données lisibles. Cependant, l'application ne communique pas directement avec l'appareil, sinon un code d'interface utilisateur différent doit être écrit pour chaque appareil. Pour éviter cette duplication de travail, nous pouvons utiliser un troisième composant entre l'application et l'appareil. Ce composant convertira et transférera les données envoyées à l'appareil, et les données envoyées par l'appareil au programme. Et ce composant est GDI+. GDI+ est l'entrée pour interagir avec les périphériques graphiques dans le .NET Framework. GDI+ est un ensemble de classes C++ situées dans une bibliothèque de classes appelée Gdiplus.dll. Gdiplus.dll est un composant intégré aux systèmes d'exploitation Windows XP et Windows Server 2003. D'accord, je ne perdrai pas beaucoup de temps à parler de sujets académiques ici. Utilisons GDI+ pour faire un dessin dans Web Form.
Vous avez dû voir des photos comme celle-ci. Bien sûr, cette image n'est pas standard. Le code est publié ici. Si vous êtes intéressé, vous pouvez l'essayer !
espace de noms Sky_MsdnDataGrid
{
utiliser le système ;
en utilisant System.Collections ;
en utilisant System.ComponentModel ;
en utilisant System.Data ;
en utilisant System.Drawing ;
en utilisant System.Drawing.Imaging ;
en utilisant System.Web ;
en utilisant System.Web.SessionState ;
en utilisant System.Web.UI ;
en utilisant System.Web.UI.WebControls ;
en utilisant System.Web.UI.HtmlControls ;
/// <résumé>
/// Description récapitulative d'AspxChart.
/// </summary>
classe publique AspxChart : System.Web.UI.Page
{
bitmap Bitmap privé ;
graphiques graphiques privés;
private int[] arrValues ;
chaîne privée[] arrValueNames ;
private void Page_Load (expéditeur de l'objet, System.EventArgs e)
{
arrValues = new int[6];
arrValueNames = nouvelle chaîne[6];
arrValues[0] = 100 ;
arrValues[1] = 135 ;
arrValues[2] = 115 ;
arrValues[3] = 125 ;
arrValues[4] = 75 ;
arrValues[5] = 120 ;
arrValueNames[0] = "Janvier";
arrValueNames[1] = "Février";
arrValueNames[2] = "Mars" ;
arrValueNames[3] = "Avril";
arrValueNames[4] = "Mai";
arrValueNames[5] = "Juin";
this.Init_Bitmap();
this.Draw_Rectangle();
this.Draw_Pie();
//Enregistre l'image dessinée au format Gif dans le flux de sortie de la réponse de la page actuelle
bitmap.Save(this.Response.OutputStream,ImageFormat.Gif);
}
/// <résumé>
/// Effectuer les premières actions sur le bitmap à dessiner (peut être imaginé comme un canevas)
/// </summary>
vide privé Init_Bitmap()
{
bitmap = nouveau Bitmap (400 200) ;
graphiques = Graphics.FromImage(bitmap);
graphiques.Clair(Couleur.Blanc);
graphiques.DrawString("Ventes de l'entreprise
}
#region Code généré par les outils de conception de formulaires Web
remplacer le void protégé OnInit (EventArgs e)
{
//
// CODEGEN : il s'agit d'un appel requis par l'outil de conception de formulaire Web ASP.NET.
//
InitializeComponent();
base.OnInit(e);
}
/// <résumé>
/// Cette méthode est requise pour la prise en charge des outils de conception - n'utilisez pas d'éditeur de code pour la modifier
/// Le contenu de cette méthode.
/// </summary>
vide privé InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
/// <résumé>
/// Dessine un rectangle sur la toile
/// </summary>
vide privé Draw_Rectangle()
{
int je;
Symbole PointFLeg = nouveau PointF(335,20);
PointF descLeg = nouveau PointF(360,16);
pour (i = 0; i < arrValueNames.Length; i++)
{
graphiques.FillRectangle(nouveau SolidBrush(GetColor(i)),symbolLeg.X,symbolLeg.Y,20,10);
graphiques.DrawRectangle(Pens.Black,symbolLeg.X,symbolLeg.Y,20,10);
graphiques.DrawString(arrValueNames[i].ToString(),new Font("Nouveau corps détaillé",8),Brushes.Black,descLeg);
symboleLeg.Y += 15 ;
descLeg.Y += 16;
}
pour (i = 0; i < arrValues.Length; i++)
{
graphiques.FillRectangle(new SolidBrush(GetColor(i)),(i*35) + 15 200 - arrValues[i],20,arrValues[i]);
graphiques.DrawRectangle(Pens.Black,(i*35) + 15 200 - arrValues[i],20,arrValues[i]);
}
}
/// <résumé>
/// Dessine une forme de tarte sur la toile
/// </summary>
vide privé Draw_Pie()
{
int je;
// currentangle représente l'angle actuel totalangle représente l'angle maximum totalvalues représente les ventes maximales
float sglCurrentAngle = 0, sglTotalAngle = 0, sglTotalValues = 0 ;
// Calculer les ventes maximales
pour (i = 0; i < arrValues.Length; i++)
sglTotalValues += arrValues[i];
pour (i = 0; i < arrValues.Length; i++)
{
// Valeur d'angle du mois en cours : ventes du mois en cours / ventes maximum * 360
sglCurrentAngle = arrValues[i] / sglTotalValues * 360 ;
graphiques.FillPie(nouveau SolidBrush(GetColor(i)),240,95,100,100,sglTotalAngle,sglCurrentAngle);
graphiques.DrawPie(Pens.Black,240,95,100,100,sglTotalAngle,sglCurrentAngle);
sglTotalAngle += sglCurrentAngle ;
}
}
Fonction d'assistance #region
couleur privée GetColor (int itemIndex)
{
Couleur couleur ;
commutateur (articleIndex)
{
cas 0 :
couleur = Couleur.Bleu ;
casser;
cas 1 :
couleur = Couleur.Rouge;
casser;
cas 2 :
couleur = Couleur.Jaune;
casser;
cas 3 :
couleur = Couleur.Violet ;
casser;
cas 4 :
couleur = Couleur.Orange;
casser;
cas 5 :
couleur = Couleur.Marron ;
casser;
défaut:
couleur = Couleur.Bleu ;
casser;
}
renvoyer la couleur ;
}
#endregion
}
}