GDI+ - واجهة جهاز الرسومات من الجيل التالي
تتفاعل جميع تطبيقات واجهة المستخدم الرسومية (GUI) مع الأجهزة (الشاشات والطابعات والماسحات الضوئية)، والتي يمكن تمثيلها كبيانات قابلة للقراءة. ومع ذلك، لا يتصل التطبيق مباشرة بالجهاز، وإلا يجب كتابة رمز واجهة مستخدم مختلف لكل جهاز. ولتجنب هذه الازدواجية في العمل، يمكننا استخدام مكون ثالث بين التطبيق والجهاز، حيث يقوم هذا المكون بتحويل ونقل البيانات المرسلة إلى الجهاز، والبيانات المرسلة من الجهاز إلى البرنامج. وهذا المكون هو GDI+. GDI+ هو المدخل للتفاعل مع أجهزة الرسومات في .NET Framework. GDI+ عبارة عن مجموعة من فئات C++ الموجودة في مكتبة فئة تسمى Gdiplus.dll. يعد Gdiplus.dll مكونًا مضمنًا في أنظمة التشغيل Windows XP وWindows Server 2003. حسنًا، لن أضيع الكثير من الوقت في الحديث عن الأمور الأكاديمية هنا، فلنستخدم GDI+ لرسم صورة في نموذج الويب.
لا بد أنك شاهدت صورًا كهذه بالطبع، هذه الصورة ليست قياسية، فالرمز موجود هنا. إذا كنت مهتمًا، يمكنك تجربتها.
مساحة الاسم Sky_MsdnDataGrid
{
باستخدام النظام؛
باستخدام System.Collections؛
باستخدام System.ComponentModel؛
باستخدام System.Data؛
باستخدام System.Drawing؛
باستخدام System.Drawing.Imaging؛
باستخدام System.Web؛
باستخدام System.Web.SessionState؛
باستخدام System.Web.UI؛
باستخدام System.Web.UI.WebControls؛
باستخدام System.Web.UI.HtmlControls؛
/// <الملخص>
/// وصف ملخص لـ AspxChart.
/// </الملخص>
الفئة العامة AspxChart: System.Web.UI.Page
{
صورة نقطية خاصة؛
رسومات بيانية خاصة؛
int الخاص[] arrValues;
سلسلة خاصة [] arrValueNames؛
Page_Load باطلة خاصة (مرسل الكائن، System.EventArgs e)
{
arrValues = new int[6];
arrValueNames = سلسلة جديدة[6];
arrValues[0] = 100;
arrValues[1] = 135;
arrValues[2] = 115;
arrValues[3] = 125;
arrValues[4] = 75;
arrValues[5] = 120;
arrValueNames[0] = "يناير";
arrValueNames[1] = "فبراير";
arrValueNames[2] = "مارس";
arrValueNames[3] = "أبريل";
arrValueNames[4] = "مايو";
arrValueNames[5] = "يونيو";
this.Init_Bitmap();
this.Draw_Rectangle();
this.Draw_Pie();
// احفظ الصورة المرسومة بتنسيق Gif في دفق الإخراج لاستجابة الصفحة الحالية
bitmap.Save(this.Response.OutputStream,ImageFormat.Gif);
}
/// <الملخص>
/// تنفيذ الإجراءات الأولية على الصورة النقطية المراد رسمها (يمكن تخيلها كلوحة قماشية)
/// </الملخص>
الفراغ الخاص Init_Bitmap()
{
bitmap = new Bitmap(400,200);
graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.White);
graphics.DrawString("مبيعات الشركة
}
#رمز المنطقة الذي تم إنشاؤه بواسطة أدوات تصميم نموذج الويب
تجاوز OnInit المحمي باطلة (EventArgs e)
{
//
// CODEGEN: هذا استدعاء مطلوب بواسطة أداة تصميم نموذج ويب ASP.NET.
//
InitializeComponent();
base.OnInit(e);
}
/// <الملخص>
/// هذه الطريقة مطلوبة لدعم أدوات التصميم - لا تستخدم محرر التعليمات البرمجية لتعديلها
/// محتوى هذه الطريقة.
/// </الملخص>
الفراغ الخاص ()InitializeComponent
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
/// <الملخص>
/// ارسم مستطيلاً على القماش
/// </الملخص>
الفراغ الخاص Draw_Rectangle()
{
كثافة العمليات أنا؛
PointF رمزLeg = new PointF(335,20);
PointF descLeg = new PointF(360,16);
لـ (i = 0; i < arrValueNames.Length; i++)
{
graphics.FillRectangle(new SolidBrush(GetColor(i)),symbolLeg.X,symbolLeg.Y,20,10);
graphics.DrawRectangle(Pens.Black,symbolLeg.X,symbolLeg.Y,20,10);
graphics.DrawString(arrValueNames[i].ToString(),new Font("New Detailed Body",8),Brushes.Black,descLeg);
رمزLeg.Y += 15;
descLeg.Y += 16;
}
لـ (i = 0; i < arrValues.Length; i++)
{
graphics.FillRectangle(new SolidBrush(GetColor(i)),(i*35) + 15,200 - arrValues[i],20,arrValues[i]);
graphics.DrawRectangle(Pens.Black,(i*35) + 15,200 - arrValues[i],20,arrValues[i]);
}
}
/// <الملخص>
/// ارسم شكل دائري على القماش
/// </الملخص>
الفراغ الخاص Draw_Pie ()
{
كثافة العمليات أنا؛
// الزاوية الحالية تمثل الزاوية الحالية، الزاوية الإجمالية تمثل الحد الأقصى للزاوية، إجمالي القيم يمثل الحد الأقصى للمبيعات
تعويم sglCurrentAngle = 0, sglTotalAngle = 0, sglTotalValues = 0;
// احسب الحد الأقصى للمبيعات
لـ (i = 0; i < arrValues.Length; i++)
sglTotalValues += arrValues[i];
لـ (i = 0; i < arrValues.Length; i++)
{
// قيمة الزاوية للشهر الحالي: مبيعات الشهر الحالي / الحد الأقصى للمبيعات * 360
sglCurrentAngle = arrValues[i] / sglTotalValues * 360;
graphics.FillPie(new SolidBrush(GetColor(i)),240,95,100,100,sglTotalAngle,sglCurrentAngle);
graphics.DrawPie(Pens.Black,240,95,100,100,sglTotalAngle,sglCurrentAngle);
sglTotalAngle += sglCurrentAngle;
}
}
# وظيفة مساعد المنطقة
اللون الخاص GetColor(int itemIndex)
{
لون اللون؛
التبديل (الفهرس)
{
الحالة 0:
اللون = اللون.الأزرق؛
استراحة؛
الحالة 1:
اللون = اللون.الأحمر؛
استراحة؛
الحالة 2:
اللون = اللون.الأصفر؛
استراحة؛
الحالة 3:
اللون = اللون.بنفسجي؛
استراحة؛
الحالة 4:
اللون = اللون.البرتقالي؛
استراحة؛
الحالة 5:
اللون = اللون. بني؛
استراحة؛
تقصير:
اللون = اللون.الأزرق؛
استراحة؛
}
لون العودة
}
#endregion
}
}