تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
للمبتدئين كيفية صنع فورم على شكل قلب او دائرة او متقاطعات او ما شابه مثال مع شرح مبسط
#1
كاتب الموضوع : egyption-coder

للعلم يوجد موضوع مشابه للأخ سمير
و لكنى اعتقد انى قد اقدم شئ مختلف قليلا هنا نظرا لأختلاف الأسلوب
-----------------------------------------------------------------------------
للأسف لا اعلم الرابط لموضوع الأخ سمير لأضعه هنا و لو يعلمه احد الأخوة فأرجوا اضافته
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

سنقوم فى المثال المرفق بالسماح للمستخدم بتحديد شكل الفورم
و بداية اريد ان اؤكد ان الأمثلة احيانا تكون هزيلة كهذا المثال مثلا لأننا لسنا شركات تعليمية
تملك فريق عمل لأنشاء هذه الأمثلة و لكن
على المبرمج ان يطلق لخياله العنان
و ان يستخدم كل ما يعلم لأخراج توليفة مبدعة و الا يحصر نفسه فى الأستخدام الذى تعلمه للكود
فأن تعلمت هنا كيف تصنع رسوميات ثنائية الأبعاد
فعليك ان تسعى الى ان تجعلها ثلاثية الأبعاد و هكذا
ان لم تعلم كيف تجعله كذلك بالكود
فقم بصنع صورة بالفوتوشوب و اضفها للفورم لكى تصل الى نفس النتيجة المهم الا تعجز و وفقكم الله الى كل
الخير
----------------------------------------------
حسنا الفكرة بسيطة
سنقوم بتعريف متغير من النوع
GraphicsPath
ثم نحدد ابعاده
ثم نضيفه الى المنطقة الرسومية للفورم
عدة اسطر من الكود و يكون لديك ما تريد
------------------------------------------------
لقد شرحت الكود فى داخل المثال نفسه
و لكنى سأحاول التوضيح هنا ايضا
اولا سنحتاج الى فورم و ليبل لتزيين الفورم و زر للخروج من البرنامج و قائمة موضعية حتى نستخدمها بدل
الأزرار لتحديد شكل الفورم المطلوب و توول تيب حتى نخبر المستخدم بالضغط كليك يمين لأستخدام القائمة
الموضعية
------------------------------------------------
حسنا الأن جميع المقادير جاهزة و نبدأ الطهى
-------
اولا فى حدث الفورم لود نحدد شكل القلب كبداية
و الشرح كما يلى
و لكن اريد ان تلاحظ اننى قمت بأختيار جميع الأبعاد بحيث يحتوى شكل الفورم على جزء من الأطار الخارجى
حتى يتمكن المستخدم من سحب الفورم و هذا حتى اوفر الوقت المستهلك فى كتابة كود خاص لسحب الفورم من
اى مكان و للعلم الكود موجود فى المنتدى فقط ابحث عن( سحب الفورم من اى مكان)
الأن مع الكود الأول

كود :
[SIZE=2]
[/SIZE][SIZE=2][color=#0000ff]Private[/color][/SIZE][SIZE=2][color=#0000ff]Sub[/color][/SIZE][SIZE=2] Form1_Load([/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] sender [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] System.Object, [/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] e [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] System.EventArgs) [/SIZE][SIZE=2][color=#0000ff]Handles[/color][/SIZE][SIZE=2][color=#0000ff]MyBase[/color][/SIZE][SIZE=2].Load
[/SIZE][SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] path [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] Drawing2D.GraphicsPath [/SIZE][SIZE=2][COLOR=#008000]'هذا هو المتغير
[/COLOR][/SIZE][SIZE=2][COLOR=#008000]'القلب كبداية
[/COLOR][/SIZE][SIZE=2]path.AddArc(70, 10, 150, 150, 135, 195) [/SIZE][SIZE=2][COLOR=#008000]'نرسم قطاع كالأتى الأحداثى اكس ثم واى ثم العرض ثم الطول ثم زاوية البداية ثم النهاية
[/COLOR][/SIZE][SIZE=2][COLOR=#008000]'القطاع السابق هو القطاع اليمين بالنسبة للفورم

[/COLOR][/SIZE][SIZE=2]path.AddArc(200, 10, 150, 150, 210, 195) [/SIZE][SIZE=2][COLOR=#008000]'و ده القطاع الأيسر بنفس الأسلوب
[/COLOR][/SIZE][SIZE=2][COLOR=#008000]'الثلاث خطوط القادمة تساوى المثلث السفلى
[/COLOR][/SIZE][SIZE=2]path.AddLine(92, 139, 210, 270) [/SIZE][SIZE=2][COLOR=#008000]'احداثى البداية ثم احداثى نهاية الخط
[/COLOR][/SIZE][SIZE=2]path.AddLine(327, 139, 210, 270)
path.AddLine(327, 139, 92, 139)
[/SIZE][SIZE=2][color=#0000ff]Me[/color][/SIZE][SIZE=2].Region = [/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] Region(path) [/SIZE][SIZE=2][COLOR=#008000]'تخصيص المتغير الخاص بالأمتداد الرسومى للمنطقة الظاهرة
[/COLOR][/SIZE][SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][COLOR=#0000ff]Sub
[/COLOR][/SIZE]
----------------------------------------
و الأن زر الدائرة


كود :
[SIZE=2]
[/SIZE][SIZE=2][color=#0000ff]Private[/color][/SIZE][SIZE=2][color=#0000ff]Sub[/color][/SIZE][SIZE=2] MenuItem2_Click([/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] sender [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] System.Object, [/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] e [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] System.EventArgs) [/SIZE][SIZE=2][color=#0000ff]Handles[/color][/SIZE][SIZE=2] MenuItem2.Click
[/SIZE][SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] path [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] Drawing2D.GraphicsPath [/SIZE][SIZE=2][COLOR=#008000]'المتغير
[/COLOR][/SIZE][SIZE=2][COLOR=#008000]'لعمل الدائرة المفرغة
[/COLOR][/SIZE][SIZE=2]path.AddEllipse(85, 0, 250, 250) [/SIZE][SIZE=2][COLOR=#008000]'الأحداثى ثم طول و عرض المستطيل المحيط بالدائرة
[/COLOR][/SIZE][SIZE=2][COLOR=#008000]''path.AddEllipse(135, 50, 150, 150)
[/COLOR][/SIZE][SIZE=2]path.AddEllipse(160, 75, 100, 100) [/SIZE][SIZE=2][COLOR=#008000]'هنا تتقاطع الدائرة الأولى مع الثانية فيحدث التفريغ
[/COLOR][/SIZE][SIZE=2][color=#0000ff]Me[/color][/SIZE][SIZE=2].Region = [/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] Region(path) [/SIZE][SIZE=2][COLOR=#008000]'تخصيص المتغير الخاص بالأمتداد الرسومى للمنطقة الظاهرة
[/COLOR][/SIZE][SIZE=2][color=#0000ff]Me[/color][/SIZE][SIZE=2].BackColor = Color.Gray
[/SIZE][SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][COLOR=#0000ff]Sub
[/COLOR][/SIZE]
---------------------------------------------
و الأن المثلث


كود :
[SIZE=2]
[/SIZE][SIZE=2][color=#0000ff]Private[/color][/SIZE][SIZE=2][color=#0000ff]Sub[/color][/SIZE][SIZE=2] MenuItem3_Click([/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] sender [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] System.Object, [/SIZE][SIZE=2][color=#0000ff]ByVal[/color][/SIZE][SIZE=2] e [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] System.EventArgs) [/SIZE][SIZE=2][color=#0000ff]Handles[/color][/SIZE][SIZE=2] MenuItem3.Click
[/SIZE][SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] path [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] Drawing2D.GraphicsPath

path.AddLine(0, 0, 216, 320) [/SIZE][SIZE=2][COLOR=#008000]' الخط الأول للمثلث من اقصى شمال الفورم الى اسفل
[/COLOR][/SIZE][SIZE=2]path.AddLine(216, 320, 408, 0) [/SIZE][SIZE=2][COLOR=#008000]'الخطالثانى من اسفل الى اعلى يمين الفورم
[/COLOR][/SIZE][SIZE=2]path.AddLine(408, 0, 0, 0) [/SIZE][SIZE=2][COLOR=#008000]'الخط الأخير للمثلث
[/COLOR][/SIZE][SIZE=2][color=#0000ff]Me[/color][/SIZE][SIZE=2].Region = [/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] Region(path)
[/SIZE][SIZE=2][color=#0000ff]Me[/color][/SIZE][SIZE=2].BackColor = Color.Khaki
[/SIZE][SIZE=2][color=#0000ff]End[/color][/SIZE][SIZE=2][COLOR=#0000ff]Sub
[/COLOR][/SIZE]
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ملحوظة هامة
عند دراستك للمثال قم بتشغيل كل سطر وحده حتى تتابع تطور الرسم
و مع التوفيق
المثال بالفيجوال ستديو 2003
و حجمه حوالى 26 كيلو بايت


الملفات المرفقة
.rar   تغيير شكل الفور&#1.rar (الحجم : 26.71 ك ب / التحميلات : 121)
}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  شرح كيفية برمجة( مثال نسخ الملفات من مكان انت تحدده الى مكان انت تحدده بامتداد انت تحدده) سعود 5 8,087 04-09-19, 04:32 AM
آخر رد: سعود
  شرح كيفية صنع محرر html واستخدامه كـ dll سعود 6 5,986 26-08-13, 09:21 PM
آخر رد: Sajad
  مثال بسيط لتغيير طريقة استخدام اداة العنان Label مع الشرح RaggiTech 0 3,026 20-10-12, 11:50 AM
آخر رد: RaggiTech
  مثال لادارة صلاحيات كل مستخدم لوحده RaggiTech 0 3,430 17-10-12, 10:05 PM
آخر رد: RaggiTech
  مثال تحريك الفورم من غير اطار RaggiTech 0 2,689 17-10-12, 10:00 PM
آخر رد: RaggiTech
  كيفية عمل صورة - مدورة - Rouded PictureBox ! RaggiTech 0 2,889 17-10-12, 09:55 PM
آخر رد: RaggiTech
  كيفية عمل String عشوائي ! RaggiTech 0 2,686 17-10-12, 09:54 PM
آخر رد: RaggiTech
  مثال يشمل عملية الحذف والتعديل والاضافة على قاعدة البيانات RaggiTech 0 4,378 17-10-12, 09:23 PM
آخر رد: RaggiTech
  فائدة - كيفية عمل Ping RaggiTech 0 3,549 17-10-12, 09:00 PM
آخر رد: RaggiTech
  مثال للحفاظ على تنسيق الاداوت اثناء تكبير الفورم في الفيجول دوت نت 2008 RaggiTech 0 3,488 17-10-12, 08:40 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم