-
إن المخطط الدائري لـ C# هو في الواقع شيء بسيط للغاية، لقد قمت بنشره لأنني أريد تنفيذ وظيفة لا يمكن تحقيقها عن طريق أي تحكم على الشبكة.
بعد البحث على الإنترنت لمدة يوم تقريبًا، شعرت بالدوار، لكن النتيجة كانت مخيبة للآمال حقًا، وفي نوبة من الغضب، رسمت واحدة بنفسي، الأمر الذي استغرق ثلاث ساعات فقط
قم بتقديم المساعدة للأصدقاء المحتاجين وتجنب الانعطافات. المعرفة تكمن في المشاركة ويمكن للجميع إحراز التقدم معًا. حسنًا، لا مزيد من الهراء، ليست هناك حاجة لتثبيت أي شيء.
يمكنك استخدامه مباشرة بالنسبة لبيئة C#.Net 2005 ونظام التشغيل XP، إذا كنت بحاجة إلى الاتصال بقاعدة البيانات للعرض الديناميكي، فأنت تحتاج فقط إلى تغيير DataTable الذي تم تمريره.
لا توجد ملاحظات أعلاه، اعتقدت أنها بسيطة جدًا، لذلك تجاهلتها وأعتقد أنه طالما قرأتها بعناية، فيجب أن تكون بسيطة جدًا.
قم أولاً بإنشاء ملف aspx وقم بنشر الكود التالي ولاحظ أنه يمكن تغيير الجزء الأحمر إلى اسم الملف الخاص بك.
باستخدام النظام؛
باستخدام System.Collections؛
باستخدام System.ComponentModel؛
باستخدام System.Data؛
باستخدام System.Drawing؛
باستخدام System.Web؛
باستخدام System.Web.UI؛
باستخدام System.Web.UI.WebControls؛
باستخدام System.Web.UI.HtmlControls؛
باستخدام System.Drawing.Drawing2D؛
باستخدام System.Drawing.Imaging؛
باستخدام System.IO؛
فئة عامة جزئية Test_Chart: System.Web.UI.Page
{
Page_Load باطلة محمية (مرسل الكائن، EventArgs e)
{
// ضع رمز المستخدم هنا لتهيئة الصفحة
تيار MemoryStream = جديد MemoryStream();
MemoryStream columnarStream = new MemoryStream();
الرسم البياني النقطي = فارغ؛
DataTable dt = new DataTable();
dt.Columns.Add("Ven", typeof(System.String));
dt.Columns.Add("BadQty"، typeof(System.Int32));
dt.Rows.Add("ويهاي، شاندونغ"، 65)؛
dt.Rows.Add("هوانغشان، انهوى"،23);
dt.Rows.Add("جيانغسو تايهو",34);
dt.Rows.Add("شنشي هواشان",98);
dt.Rows.Add("جبل جينغقانغ، هونان"،102);
dt.Rows.Add("هاينان نانهاي",74);
graph = GetPieGraph("إحصاءات معدل الفشل المركب لكل مجموعة"،600,500,100,30,dt);
graph.Save(stream, ImageFormat.Jpeg);
// إخراج الصورة
استجابة. واضح ()؛
Response.ContentType = "image/jpeg";
Response.BinaryWrite(stream.ToArray());
}
الصورة النقطية المحمية GetPieGraph (عنوان السلسلة، عرض int، ارتفاع int، int يسار، int top، DataTable gdt)
{
Bitmap objbitmap = new Bitmap(width, height);
الرسومات الجرافيكية؛
objgraphics = Graphics.FromImage(objbitmap);
objgraphics.Clear(Color.White);
StringFormat drawformat = new System.Drawing.StringFormat(StringFormatFlags.DirectionVertical);
StringFormat drawformat1 = new System.Drawing.StringFormat(StringFormatFlags.DisplayFormatControl);
objgraphics.DrawString(title, new Font("宋体", 16),Brushes.Black, 150, 5, drawformat1);
PointF codeleg = new PointF(left, height-top-45);
PointF descleg = new PointF(left + 20, height - top - 45);
// ارسم الحدود
objgraphics.DrawRectangle(Pens.Black, 0, 0, width-1, height-1);
// إطار صغير داخل الصورة
int h = gdt.Rows.Count / 4;
إذا (gdt.Rows.Count % 4 > 0)
{
ح = ح + 1؛
}
objgraphics.DrawRectangle(Pens.Black, left-10, height-top-50,gdt.Rows.Count*70+10,20*h);
// أظهر اللون الذي يمثل ماذا
لـ (int i = 0; i < gdt.Rows.Count; i++)
{
إذا (i >= 4 && (i+1)%4==1)
{
رمزleg.Y += 20;
descleg.Y += 20;
X=left;
descleg.X = يسار + 20؛
}
objgraphics.FillRectangle(new SolidBrush(getcolor(i)), الرمزleg.X, الرمزleg.Y, 12, 10);
objgraphics.DrawRectangle(Pens.Black, رمزleg.X, رمزleg.Y, 12, 10);
objgraphics.DrawString(gdt.Rows[i][0].ToString().Trim(), new Font("宋体", 10), Brushes.Black, descleg);
codeleg.X += 100;
descleg.X += 100;
}
تعويم sglcurrentangle = 0؛
تعويم sgltotalangle = 0;
تعويم sgltotalvalues u003d 0؛
لـ (int i = 0; i < gdt.Rows.Count; i++)
{
sgltotalvalues += float.Parse(gdt.Rows[i][1].ToString().Trim());
}
لـ (int i = 0; i < gdt.Rows.Count; i++)
{
sglcurrentangle = float.Parse(gdt.Rows[i][1].ToString().Trim()) / sgltotalvalues * 360;
objgraphics.FillPie(new SolidBrush(getcolor(i)), left+50, top+30, 300, 300, sgltotalangle, sglcurrentangle);
objgraphics.DrawPie(Pens.Black, left + 50, top + 30,300, 300, sgltotalangle, sglcurrentangle);
// نصف القطر ص
مزدوج ص = 300 / 2؛
// موضع مركز الدائرة:
مزدوج CX = اليسار + 50 + ص؛
مزدوج cY = أعلى + 30 + ص؛
// إحداثيات النقطة على الدائرة:
double dX = r * Math.Cos((360 - sgltotalangle - sglcurrentangle / 2) * 3.14 / 180);
double dY = r * Math.Sin((360 - sgltotalangle - sglcurrentangle / 2) * 3.14 / 180);
// الموقع على الدائرة:
مزدوج dcX = cX + dX؛
مزدوج dcY = cY - dY؛
// نصف القطر ص
مزدوج r1 = 350 / 2؛
// موضع مركز الدائرة:
مزدوج cX1 = اليسار + 50 + ص؛
مزدوج cY1 = أعلى + 30 + ص؛
// إحداثيات النقطة على الدائرة:
double dX1 = r1 * Math.Cos((360 - sgltotalangle - sglcurrentangle / 2) * 3.14 / 180);
double dY1 = r1 * Math.Sin((360 - sgltotalangle - sglcurrentangle / 2) * 3.14 / 180);
// الموقع على الدائرة:
مزدوج dcX1 = cX1 + dX1؛
مزدوج dcY1 = cY1 - dY1؛
objgraphics.DrawLine(Pens.Black,Convert.ToInt32(dcX) ,Convert.ToInt32(dcY),Convert.ToInt32(dcX1), Convert.ToInt32(dcY1));
إذا (dX1 >= 0 && dY1 >= 0)
{
objgraphics.DrawString(gdt.Rows[i][0].ToString().Trim(), new Font("宋体", 10), Brushes.Black, Convert.ToInt32(dcX1), Convert.ToInt32(dcY1 - 5) ));
}
إذا (dX1 <= 0 && dY1 >= 0)
{
objgraphics.DrawString(gdt.Rows[i][0].ToString().Trim(), new Font("宋体", 10), Brushes.Black, Convert.ToInt32(dcX1 - 25), Convert.ToInt32(dcY1) - 15))؛
}
إذا (dX1 <= 0 && dY1 <= 0)
{
objgraphics.DrawString(gdt.Rows[i][0].ToString().Trim(), new Font("宋体", 10), Brushes.Black, Convert.ToInt32(dcX1 - 30), Convert.ToInt32(dcY1) ));
}
إذا (dX1 >= 0 && dY1 <= 0)
{
objgraphics.DrawString(gdt.Rows[i][0].ToString().Trim(), new Font("宋体", 10), Brushes.Black, Convert.ToInt32(dcX1), Convert.ToInt32(dcY1)) ;
}
//GetLet(left + 50+150, top + 30+150,300,sgltotalangle, sglcurrentangle,arrvalues[i].ToString());
sgltotalangle += sglcurrentangle;
}
إرجاع خريطة objbitmap؛
}
GetLet باطلة محمية (int startX، int startY، double dia، double TotalAngle، doublecurrentAngle، string leg)
{
مزدوج س = 0؛
مزدوج ص = 0؛
مزدوج ص = ضياء / 2؛
x = r * Math.Cos((360 - TotalAngle -currentAngle / 2) * 3.14 / 180);
y = r * Math.Sin((360 - TotalAngle -currentAngle / 2) * 3.14 / 180);
}
اللون المحمي getcolor (int itemindex)
{
لون الكائن؛
إذا (itemindex >= 14)
{
فهرس البند = فهرس البند % 14؛
}
إذا (itemindex == 0)
{
objcolor = Color.DarkMagenta;
}
وإلا إذا (itemindex == 1)
{
objcolor = Color.MediumAquamarine;
}
وإلا إذا (itemindex == 2)
{
objcolor = Color.DeepSkyBlue;
}
وإلا إذا (itemindex == 3)
{
objcolor = Color.DarkRed;
}
وإلا إذا (itemindex == 4)
{
objcolor = Color.Pink;
}
وإلا إذا (itemindex == 5)
{
objcolor = Color.Salmon;
}
وإلا إذا (itemindex == 6)
{
objcolor = Color.Khaki;
}
وإلا إذا (itemindex == 7)
{
objcolor = Color.Maroon;
}
وإلا إذا (itemindex == 8)
{
objcolor = Color.LawnGreen;
}
وإلا إذا (itemindex == 9)
{
objcolor = Color.LightGoldenrodYellow;
}
وإلا إذا (itemindex == 10)
{
objcolor = Color.Moccasin;
}
وإلا إذا (itemindex == 11)
{
objcolor = Color.YellowGreen;
}
وإلا إذا (itemindex == 12)
{
objcolor = Color.DarkCyan;
}
وإلا إذا (itemindex == 13)
{
objcolor = Color.SteelBlue;
}
وإلا إذا (itemindex == 14)
{
objcolor = Color.Tomato;
}
آخر
{
objcolor = Color.SlateGray;
}
إرجاع لون الكائن؛
}
}