السلام عليكم
بعد العديد من الممحاولات أطلبكم المساعدة
لدي piture box موجودة على form1
أقوم برسم مجموعة من النقاط عليها/ عند الحدث :
PictureBox1_Paint
أقوم بالتالي:
Dim gr As Graphics Dim pt As classPt gr = e.Graphics For Each pt In ptList pt.initPoint() pt.Draw(gr) Next
وكما تلاحظون من الكود السابق إني أنشأت كلاس يدعي : classPt بداخلة دالتين: initPoint + Draw
في الدالة: initPoint
Public Sub initSquare() ptColor = Color.Red() SQPEN = New Pen(ptColor ) SQBrush = New SolidBrush(ptColor ) End Sub
وفي الدالة:Draw
Dim left, top, width, height As Integer left = center.X - radius top = center.Y - radius width = 2 * radius height = 2 * radius path = New GraphicsPath path.StartFigure() path.AddEllipse(left, top, width, height) path.CloseFigure() SQPEN.Color = ptColor SQBrush.Color = ptColor If IsMid = False Then gr.FillPath(SQBrush, path) gr.DrawPath(SQPEN, path) Else gr.FillPath(Brushes.Blue, path) gr.DrawPath(Pens.Blue, path) End If Next End Sub
وكما تلاحظون في الدالة الثانية تقوم باختبار النقطة قبل تلوينها
فإذا كانت mid لونتها بالازرق
ولو كانت ليست mid بقيت بالاحمر
طبعا الاختبار mid أو ليست mid يكون باستخدام كلاس ثانية تدعى classmid
وبها الغورذيتم يختبر كل نقطة حتى يجد الـ mid المناسبة لكل مجموعة
حتى الآن لا مشكلة وهذه الصورة عند رسم نقاط على picture box:
وبعد الاختبار:
المشكلة إني أردت أن أجعل كل مجموعة بلون مختلف
ولذلك قمت بالتالي:
في الفورم الرئيسية للبرنامج وبعد حساب النقاط التي تنتمي لكل مجموعة والـ,mid للمجموعة أقوم بتلوين كل نقطة في كل مجموعة عن طريق استدعاء الدالة
Draw والموجودة في الكلاس: classPt
يظهر خطأ عند الـ path لأنه لا يقبل استدعاءه في مرتين أو هكذا فهمت من رسالة الخطأ
أرجو مساعدتي لأني تعبت جدا من كثرة المحاولات ولم أصل لنتيجة