رسم شجرة ثنائية

أرسل من قبل VIRUS في السبت, 2008/05/10 - 9:40pm.
صورة VIRUS

تاريخ التسجيل: 2006-08-20
مشاركات: 36

الجامعة: العربية الأوربية
الكلية: الهندسة المعلوماتية
المرحلة: السنة الثانية
الاختصاص: غير ذلك

السلام عليكم
شباب حدا عندو طريقة أو فكرة لرسم شجرة ثنائية Binary search tree ........باستخدام GDI+ بلغة C# على PictureBox
مع جزيل الشكر........

 
دخول أو تسجيل لإرسال التعليقات | قراءة: 225

خيارات عرض التعليقات

اختر طريقتك المفضلة لعرض التعليقات و اضغط "حفظ الإعدادات" لتفعيل تغييراتك.
السبت, 2008/05/10 - 9:51pm
عضو فعال
صورة The Tornado

تاريخ التسجيل: 2007-06-07
مشاركات: 773

الجامعة: دمشق
الكلية: الهندسة المعلوماتية
المرحلة: السنة الرابعة
الاختصاص: ذكاء صنعي

اذا انت بتعرف توابع الرسم بالـ +GDI بالـ #C أو مجرب ترسم بشي مكان تاني متل الـ Canvas بالـ Delphi و الـ C++ Builder .. ما بتصور رح تلاقي صعوبة

 

كل الفكرة انك رح ترسم الـ Root بالبداية على شكل دائرة

وبما انو الشجرة ثنائية ما بتصور انو في كتير صعوبة برسم المستوى التالي للجذر لأنو انت (افتراضيا) رح تقسم الـ PictureBox أو الـ Form اللي عم ترسم عليها لنصفين ... كل نصف لترسم فيه جزء من الشجرة وبالتالي رح تاخد مثلا Width / 2 وبعدين ترسم الابن اليساري بمنتصف الجزء الأيسر يعني بكون الـ left تبعو هو الـ left تبع الأب مطروحا منه Width / 4 والـ Height بكون أقل شوي من الـ Height تبع الأب

وترسم Line من مركز الأب لمركز الابن، بعدين بترسم الابن الأيمن بنفس الطريقة وبتستدعي تابع الرسم بشكل عودي عند الابن الأيمن وبعدين الأيسر

هي خوارزمية الرسم بشكل عام

ومشان الـ #C بتكتب مثلا وقت بدك ترسم :

Graphics s = Graphics.FromImage(image1); 

على افتراض انو عندك Image على الـ Form واسمها image1 ..

وبعدين بتقدر تستدعي توابع الرسم الموجودة بـ s ... 

مبروك لإسبانيا Smile
لعبوا واستاهلوا الكأس

 
دخول أو تسجيل لإرسال التعليقات
الأحد, 2008/05/11 - 12:18pm
صورة VIRUS

تاريخ التسجيل: 2006-08-20
مشاركات: 36

الجامعة: العربية الأوربية
الكلية: الهندسة المعلوماتية
المرحلة: السنة الثانية
الاختصاص: غير ذلك

هلق السؤال هو أنو شلون بدو يكون تابع الرسم ؟؟؟
أنا نجحت برسم ال root مع المستوى الأول.....

يعني الصعوبة مو بال +GDI لأني اشتغلت مشروع رسام الفصل الماضي...

الصعوبة هي بتابع الرسم......

وشكرا The Tornado على شرحك الرائع

 
دخول أو تسجيل لإرسال التعليقات
الأحد, 2008/05/11 - 12:21pm
صورة VIRUS

تاريخ التسجيل: 2006-08-20
مشاركات: 36

الجامعة: العربية الأوربية
الكلية: الهندسة المعلوماتية
المرحلة: السنة الثانية
الاختصاص: غير ذلك

هلق السؤال هو أنو شلون بدو يكون تابع الرسم ؟؟؟
أنا نجحت برسم ال root مع المستوى الأول.....

يعني الصعوبة مو بال +GDI لأني اشتغلت مشروع رسام الفصل الماضي...

الصعوبة هي بتابع الرسم......

وشكرا The Tornado على شرحك الرائع

 
دخول أو تسجيل لإرسال التعليقات
الأحد, 2008/05/11 - 12:23pm
صورة VIRUS

تاريخ التسجيل: 2006-08-20
مشاركات: 36

الجامعة: العربية الأوربية
الكلية: الهندسة المعلوماتية
المرحلة: السنة الثانية
الاختصاص: غير ذلك

هلق السؤال هو أنو شلون بدو يكون تابع الرسم ؟؟؟
أنا نجحت برسم ال root مع المستوى الأول.....

يعني الصعوبة مو بال +GDI لأني اشتغلت مشروع رسام الفصل الماضي...

الصعوبة هي بتابع الرسم......

وشكرا The Tornado على شرحك الرائع

 
دخول أو تسجيل لإرسال التعليقات
الأحد, 2008/05/11 - 5:54pm
مشرف
صورة mpcabd

تاريخ التسجيل: 2006-02-19
مشاركات: 2139

الجامعة: دمشق
الكلية: الهندسة المعلوماتية
المرحلة: السنة الثانية

أنا رح أعطيك الفكرة العامة:

Draw_Tree(Graphics g, TreeItem t, int x, int y)
{
if (t != null)
{
g.DrawEllipse(Pens.Black, x, y, 20, 20);
g.DrawString(Brushes.Black, x, y, t.Value.ToString());
if (t.Right != null)
Draw_Tree(g, t.Right, x + 20 + 10, y + 20 + 10);
if (t.Left != null)
Draw_Tree(g, t.Left, x - 20 - 10, y + 20 + 10);
}
}

 
دخول أو تسجيل لإرسال التعليقات