นี่คือกราฟที่สร้างจากข้อมูลในชุดข้อมูล
ชุดข้อมูลของฉันคือข้อมูลที่อ่านจากตาราง Sendrec มีหลายช่องเช่น Id, Sendid (หมายเลขคำสั่งซื้อ), Sendtime (เวลาในการบันทึก) และ Sendnum (จำนวนที่ส่งต่อหน่วยเวลา/ห้านาทีในกรณีของฉัน
) ดังต่อไปนี้:
การดึงโมฆะสาธารณะ (หน้าเพจ, DataSet ds, int Tnum){}
เพจนี้ใช้เพื่อส่งเพจที่อ้างอิงถึงกระบวนการนี้ เพื่อให้เพจสามารถส่งออกกราฟเส้นโค้งที่สร้างขึ้นไปยังไคลเอนต์ในโหมด JPG ได้โดยตรง
ds คือชุดข้อมูลที่แยกออกมา
Tnum เป็นเพียงพารามิเตอร์ที่ฉันต้องการใช้ที่นี่ ฉันไม่ต้องการให้คลาสนี้ถูกเปิดเผยต่อกระบวนการอ่าน ดังนั้นฉันจึงนำจำนวนคำสั่งซื้อทั้งหมดโดยตรงแล้วส่งต่อไปให้คลาสนั้น
ใช้ระบบ;
ใช้ System.Data;
โดยใช้ระบบการกำหนดค่า;
ใช้ System.Web;
โดยใช้ System.Web.Security;
โดยใช้ System.Web.UI;
System.Web.UI.WebControls
;
โดยใช้ระบบ. Drawing. Drawing2D;
โดยใช้ระบบ.การวาดภาพ.ภาพ;
โดยใช้ระบบการวาดภาพ;
ใช้ System.IO;
imgdraw ชั้นเรียนสาธารณะ
-
imgdraw สาธารณะ ()
-
-
การวาดโมฆะสาธารณะ (หน้าเพจ, ชุดข้อมูล ds, int Tnum)
-
//รับจำนวนเรคคอร์ด
จำนวน int = ds.Tables[0].Rows.Count;
//คำนวณความกว้างของแผนภูมิ
int wd = 80 + 20 * (นับ - 1);
//ตั้งค่าความกว้างขั้นต่ำเป็น 800
ถ้า (wd < 800) wd = 800;
//สร้างวัตถุบิตแมป
บิตแมป img=บิตแมปใหม่ (wd,400);
//สร้างวัตถุรูปวาด
กราฟิก g = Graphics.FromImage (img);
//กำหนดแปรงสีดำ
Pen Bp = ปากกาใหม่ (Color.Black);
//กำหนดแปรงสีแดง
ปากกา Rp = ปากกาใหม่ (Color.Red);
//กำหนดแปรงสีเทาเงิน
Pen Sp = ปากกาใหม่ (สีเงิน)
//กำหนดแบบอักษรของชื่อเรื่อง
แบบอักษร Bfont = แบบอักษรใหม่ ("Arial", 12, FontStyle.Bold);
//กำหนดแบบอักษรทั่วไป
แบบอักษร แบบอักษร = แบบอักษรใหม่ ("Arial", 6);
//กำหนดขนาดตัวอักษรให้ใหญ่ขึ้น
แบบอักษร Tfont = แบบอักษรใหม่ ("Arial", 9);
//วาดสีพื้นหลัง
g.DrawRectangle (ปากกาใหม่ (สีขาว, 400), 0, 0, img.Width, img.Height);
//กำหนดแปรงเปลี่ยนสีดำ
แปรง LinearGradientBrush = LinearGradientBrush ใหม่ (สี่เหลี่ยมผืนผ้าใหม่ (0, 0, img.Width, img.Height), Color.Black, Color.Black, 1.2F, จริง);
//กำหนดแปรงเปลี่ยนสีน้ำเงิน
LinearGradientBrush Bluebrush = LinearGradientBrush ใหม่ (สี่เหลี่ยมผืนผ้าใหม่ (0, 0, img.Width, img.Height), Color.Blue, Color.Blue, 1.2F, จริง);
//วาดหัวเรื่องใหญ่
g.DrawString(ds.Tables[0].Rows[0]["sendid"].ToString() + "เส้นโค้งสถานะการจัดส่งคำสั่งซื้อ", Bfont, แปรง, 40, 5);
//รับปริมาณการส่งปัจจุบัน
ตัวเลข int=0;
สำหรับ (int i = 0; i < นับ; i++)
-
nums+=Convert.ToInt32(ds.Tables[0].Rows[i]["sendnum"]);
-
//วาดบรรยายสรุปข้อมูล
string info="เวลาในการส่งคำสั่งซื้อ:"+ds.Tables[0].Rows[0]["sendtime"].ToString()+" เวลาสร้างเส้นโค้ง: "+DateTime.Now.ToString()+" จำนวนรวมของคำสั่งซื้อ : "+Tnum.ToString()+" ยอดรวมปัจจุบันที่ส่ง: "+nums.ToString();
g.DrawString(ข้อมูล, Tfont, Bluebrush, 40, 25);
//วาดเส้นขอบรูปภาพ
g.DrawRectangle(Bp, 0, 0, img.Width - 1, img.Height - 1);
// วาดเส้นพิกัดแนวตั้ง
สำหรับ (int i = 0; i < นับ; i++)
-
g.DrawLine(Sp, 40+20 * i, 60, 40+20 * i, 360);
-
//วาดป้ายกำกับพิกัดไทม์ไลน์
สำหรับ (int i = 0; i < นับ; i+=2)
-
string st = Convert.ToDateTime(ds.Tables[0].Rows[i]["sendtime"]).ToString("hh:mm");
g.DrawString(st, ฟอนต์, แปรง, 30 + 20 * i, 370);
-
//วาดเส้นพิกัดแนวนอน
สำหรับ (int i = 0; i < 10; i++)
-
g.DrawLine(Sp, 40, 60+30*i, 40+20*(นับ-1), 60+30*i);
int s = 2500 - 50 * i * 5;
//วาดป้ายกำกับพิกัดแกนจำนวนเงินที่ส่ง
g.DrawString(s.ToString(), ฟอนต์, แปรง, 10, 60 + 30 * i);
-
//วาดแกนแนวตั้ง
g.DrawLine(Bp, 40, 55, 40, 360);
//วาดแกนนอน
g.DrawLine(Bp, 40, 360, 45 + 20 * (นับ - 1), 360);
//กำหนดจุดเปลี่ยนของเส้นโค้ง
จุด [] p = จุดใหม่ [นับ];
สำหรับ (int i = 0; i < นับ; i++)
-
p[i].X = 40 + 20 * i;
p[i].Y = 360- Convert.ToInt32(ds.Tables[0].Rows[i]["sendnum"]) / 5*3/5;
-
//วาดเส้นโค้งการส่ง
g.DrawLines(Rp, p);
สำหรับ (int i = 0; i < นับ; i++)
-
//วาดจำนวนการส่งของจุดบันทึกการส่ง
g.DrawString(ds.Tables[0].Rows[i]["sendnum"].ToString(), แบบอักษร, Bluebrush, p[i].X, p[i].Y - 10);
//วาดจุดบันทึกการส่ง
g.DrawRectangle(Rp, p[i].X - 1, p[i].Y - 1, 2, 2);
-
//วาดชื่อพิกัดแนวตั้ง
g.DrawString("จำนวนเงินที่ส่ง", Tfont, แปรง, 5, 40);
// วาดชื่อ Abscissa
g.DrawString("เวลาส่ง", Tfont, แปรง, 40, 385);
//บันทึกภาพที่วาด
สตรีม MemoryStream = MemoryStream ใหม่ ();
img.Save(สตรีม, ImageFormat.Jpeg);
//เอาท์พุตรูปภาพ
หน้าการตอบสนอง.Clear();
page.Response.ContentType = "รูปภาพ/jpeg";
page.Response.BinaryWrite(สตรีม.ToArray());
}
-
เฮ้! การโพสต์นี้เป็นเพียงบันทึกเกี่ยวกับวิธีการวาดภาพ ยังมีข้อผิดพลาดอยู่มาก ฉันหวังว่าคุณจะช่วยแนะนำฉันได้บ้าง
http://www.cnblogs.com/aowind/archive/2006/11/23/569536.html