فيما يلي رسم بياني تم إنشاؤه من البيانات الموجودة في مجموعة البيانات.
مجموعة البيانات الخاصة بي هي البيانات المقروءة من الجدول Sendrec. هناك العديد من الحقول مثل Id وSendid (رقم الطلب) وSendtime (وقت التسجيل) وSendnum (المبلغ المرسل لكل وحدة زمنية/خمس دقائق في حالتي)
. على النحو التالي:
رسم الفراغ العام (صفحة الصفحة،DataSet ds،int Tnum){}
يتم استخدام الصفحة لتمرير الصفحة التي تشير إلى هذه العملية، بحيث يمكن للصفحة إخراج الرسم البياني المنحني الذي تم إنشاؤه مباشرة إلى العميل في وضع JPG.
ds هي مجموعة البيانات المستخرجة.
Tnum هو مجرد معلمة أريد استخدامها هنا، ولا أريد أن يتعرض هذا الفصل لعملية القراءة، لذلك آخذ المبلغ الإجمالي للطلب مباشرة وأرسله إليه.
باستخدام النظام؛
باستخدام System.Data؛
باستخدام System.Configuration؛
باستخدام System.Web؛
باستخدام System.Web.Security؛
باستخدام System.Web.UI؛
باستخدام System.Web.UI.WebControls؛
باستخدام System.Web.UI.HtmlControls؛
باستخدام System.Drawing.Drawing2D؛
باستخدام System.Drawing.Imaging؛
باستخدام System.Drawing؛
باستخدام System.IO؛
imgdraw الطبقة العامة
{
الصورة العامة ()
{
}
رسم الفراغ العام (صفحة الصفحة، DataSet ds، int Tnum)
{
// احصل على عدد السجلات
int count = ds.Tables[0].Rows.Count;
// احسب عرض المخطط
كثافة العمليات = 80 + 20 * (العدد - 1)؛
// اضبط الحد الأدنى للعرض على 800
إذا (wd < 800) wd = 800؛
// إنشاء كائن نقطي
Bitmap img=new Bitmap(wd,400);
// إنشاء كائن رسومي
الرسومات g = Graphics.FromImage(img);
// تحديد الفرشاة السوداء
قلم Bp = قلم جديد (Color.Black)؛
//حدد الفرشاة الحمراء
Pen Rp = قلم جديد (Color.Red)؛
// تحديد فرشاة رمادية فضية
Pen Sp = قلم جديد (Color.Silver)؛
// تحديد خط العنوان
Font Bfont = new Font("Arial", 12, FontStyle.Bold);
// تحديد الخط العام
الخط الخط = الخط الجديد ("Arial"، 6)؛
// تحديد خط أكبر
Font Tfont = new Font("Arial", 9);
// ارسم لون الخلفية
g.DrawRectangle(new Pen(Color.White, 400), 0, 0, img.Width, img.Height);
// تحديد فرشاة الانتقال السوداء
LinearGradientBrush Brush = new LinearGradientBrush(new Rectangle(0, 0, img.Width, img.Height), Color.Black, Color.Black, 1.2F, true);
// تحديد فرشاة الانتقال الزرقاء
LinearGradientBrush Bluebrush = new LinearGradientBrush(new Rectangle(0, 0, img.Width, img.Height), Color.Blue, Color.Blue, 1.2F, true);
// ارسم العنوان الكبير
g.DrawString(ds.Tables[0].Rows[0]["sendid"].ToString() + "منحنى حالة تسليم الطلب"، Bfont، Brush، 40، 5);
// احصل على حجم الإرسال الحالي
الأعداد الصحيحة = 0؛
ل(int i = 0; i <count; 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(info, Tfont, Bluebrush, 40, 25);
// ارسم حدود الصورة
g.DrawRectangle(Bp, 0, 0, img.Width - 1, img.Height - 1);
// ارسم خط الإحداثيات العمودي
ل(int i = 0; i <count; i++)
{
g.DrawLine(Sp, 40+20 * i, 60, 40+20 * i, 360);
}
// ارسم تسميات إحداثيات المخطط الزمني
ل(int i = 0; i <count; i+=2)
{
string st = Convert.ToDateTime(ds.Tables[0].Rows[i]["sendtime"]).ToString("hh:mm");
g.DrawString(st, Font, Brush, 30 + 20 * i, 370);
}
// ارسم خط الإحداثيات الأفقي
لـ (int i = 0; i < 10; i++)
{
g.DrawLine(Sp, 40, 60+30*i, 40+20*(count-1), 60+30*i);
كثافة العمليات = 2500 - 50 * ط * 5؛
// ارسم تسمية إحداثيات محور المبلغ المرسل
g.DrawString(s.ToString(), الخط, فرشاة, 10, 60 + 30 * i);
}
// ارسم المحور العمودي
g.DrawLine(بي بي، 40، 55، 40، 360)؛
// ارسم المحور الأفقي
g.DrawLine(Bp, 40, 360, 45 + 20 * (count - 1), 360);
// تحديد نقطة تحول المنحنى
Point[] p = new Point[count];
ل(int i = 0; i <count; i++)
{
ص[i].X = 40 + 20 * i;
p[i].Y = 360- Convert.ToInt32(ds.Tables[0].Rows[i]["sendnum"]) / 5*3/5;
}
// ارسم منحنى الإرسال
(
Rp, p);
{
// ارسم مبلغ الإرسال لنقطة تسجيل الإرسال
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)؛
// ارسم عنوان الإحداثي
g.DrawString("إرسال الوقت"، Tfont، فرشاة، 40، 385)؛
// احفظ الصورة المرسومة
تيار MemoryStream = جديد MemoryStream();
img.Save(stream, ImageFormat.Jpeg);
// إخراج الصورة
page.Response.Clear();
page.Response.ContentType = "image/jpeg";
)
;
}
مرحبًا! يعد نشر هذا مجرد تسجيل لكيفية رسم صورة، ولا يزال هناك الكثير من الأخطاء هنا، وآمل أن تقدم لي بعض النصائح.
http://www.cnblogs.com/aowind/archive/2006/11/23/569536.html