Hier ist ein Diagramm, das aus den Daten im Datensatz generiert wurde.
Mein Datensatz besteht aus den aus der Tabelle Sendrec gelesenen Daten. Es gibt mehrere Felder wie Id, Sendid (Auftragsnummer), Sendtime (Aufzeichnungszeit) und Sendnum (in meinem Fall pro Zeiteinheit/fünf Minuten gesendeter Betrag)
. wie folgt:
public void draw(Page page,DataSet ds,int Tnum){}
Die Seite wird verwendet, um die Seite zu übergeben, die auf diesen Prozess verweist, sodass die Seite das generierte Kurvendiagramm direkt im JPG-Modus an den Client ausgeben kann.
ds ist der extrahierte Datensatz.
Tnum ist nur ein Parameter, den ich hier verwenden möchte. Ich möchte nicht, dass diese Klasse dem Lesevorgang ausgesetzt wird, also nehme ich den Gesamtbetrag der Bestellung direkt und übergebe ihn an sie.
Verwenden des Systems;
Verwenden von System.Data;
Verwenden von System.Configuration;
mit System.Web;
mit System.Web.Security;
mit System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
mit System.Drawing.Drawing2D;
mit System.Drawing.Imaging;
Verwenden von System.Drawing;
mit System.IO;
öffentliche Klasse imgdraw
{
öffentliches imgdraw()
{
}
public void draw(Seite page,DataSet ds,int Tnum)
{
//Anzahl der Datensätze abrufen
int count = ds.Tables[0].Rows.Count;
//Chartbreite berechnen
int wd = 80 + 20 * (Anzahl - 1);
//Setzen Sie die Mindestbreite auf 800
if (wd < 800) wd = 800;
//Bitmap-Objekt generieren
Bitmap img=new Bitmap(wd,400);
//Zeichnungsobjekt generieren
Grafiken g = Graphics.FromImage(img);
//Schwarzen Pinsel definieren
Stift Bp = neuer Stift (Farbe.Schwarz);
//Definiere den roten Pinsel
Stift Rp = neuer Stift (Farbe.Rot);
//Silbergrauen Pinsel definieren
Stift Sp = neuer Stift (Farbe. Silber);
//Definieren Sie die Schriftart des Titels
Schriftart Bfont = new Font("Arial", 12, FontStyle.Bold);
//Allgemeine Schriftart definieren
Schriftart Schriftart = neue Schriftart("Arial", 6);
//Definieren Sie eine größere Schriftart
Schriftart Tfont = new Font("Arial", 9);
//Hintergrundfarbe zeichnen
g.DrawRectangle(new Pen(Color.White, 400), 0, 0, img.Width, img.Height);
//Schwarzen Übergangspinsel definieren
LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, img.Width, img.Height), Color.Black, Color.Black, 1.2F, true);
//Definiere den blauen Übergangspinsel
LinearGradientBrush Bluebrush = new LinearGradientBrush(new Rectangle(0, 0, img.Width, img.Height), Color.Blue, Color.Blue, 1.2F, true);
//Zeichne den großen Titel
g.DrawString(ds.Tables[0].Rows[0]["sendid"].ToString() + "Order Delivery Status Curve", Bfont, Brush, 40, 5);
//Das aktuelle Sendevolumen abrufen
int nums=0;
for (int i = 0; i < count; i++)
{
nums+=Convert.ToInt32(ds.Tables[0].Rows[i]["sendnum"]);
}
//Informationsbriefing zeichnen
string info="Sendezeit der Bestellung:"+ds.Tables[0].Rows[0]["sendtime"].ToString()+" Zeit der Kurvengenerierung: "+DateTime.Now.ToString()+" Gesamtbetrag der Bestellung : "+Tnum.ToString()+" Aktuelle Gesamtmenge gesendet: "+nums.ToString();
g.DrawString(info, Tfont, Bluebrush, 40, 25);
//Bildrand zeichnen
g.DrawRectangle(Bp, 0, 0, img.Width - 1, img.Height - 1);
//Zeichne eine vertikale Koordinatenlinie
for (int i = 0; i < count; i++)
{
g.DrawLine(Sp, 40+20 * i, 60, 40+20 * i, 360);
}
//Zeitachsen-Koordinatenbeschriftungen zeichnen
for (int i = 0; i < count; i+=2)
{
string st = Convert.ToDateTime(ds.Tables[0].Rows[i]["sendtime"]).ToString("hh:mm");
g.DrawString(st, Schriftart, Pinsel, 30 + 20 * i, 370);
}
//Zeichne die horizontale Koordinatenlinie
for (int i = 0; i < 10; i++)
{
g.DrawLine(Sp, 40, 60+30*i, 40+20*(count-1), 60+30*i);
int s = 2500 - 50 * i * 5;
//Zeichne die Koordinatenbeschriftung der Sendebetragsachse
g.DrawString(s.ToString(), Schriftart, Pinsel, 10, 60 + 30 * i);
}
//Zeichne die vertikale Achse
g.DrawLine(Bp, 40, 55, 40, 360);
//Zeichne die horizontale Achse
g.DrawLine(Bp, 40, 360, 45 + 20 * (count - 1), 360);
//Definieren Sie den Wendepunkt der Kurve
Point[] p = new Point[count];
for (int i = 0; i < count; i++)
{
p[i].X = 40 + 20 * i;
p[i].Y = 360- Convert.ToInt32(ds.Tables[0].Rows[i]["sendnum"]) / 5*3/5;
}
//Sendekurve zeichnen
g.DrawLines(Rp, p);
for (int i = 0; i < count; i++)
{
//Zeichne den Sendebetrag des Sendedatensatzpunkts
g.DrawString(ds.Tables[0].Rows[i]["sendnum"].ToString(), Schriftart, Bluebrush, p[i].X, p[i].Y - 10);
//Zeichne den sendenden Datensatzpunkt
g.DrawRectangle(Rp, p[i].X - 1, p[i].Y - 1, 2, 2);
}
//Zeichne den vertikalen Koordinatentitel
g.DrawString("Betrag senden", Tfont, Pinsel, 5, 40);
//Zeichne den Abszissentitel
g.DrawString("Send Time", Tfont, brush, 40, 385);
//Speichern Sie das gezeichnete Bild
MemoryStream stream = new MemoryStream();
img.Save(stream, ImageFormat.Jpeg);
//Bildausgabe
page.Response.Clear();
page.Response.ContentType = "image/jpeg";
)
;
}
Hey! Ich schreibe nur, wie man ein Bild zeichnet. Ich hoffe, Sie können mir einen Rat geben.
http://www.cnblogs.com/aowind/archive/2006/11/23/569536.html