الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف استطيع النقر على مكانين بالفأرة فيرسم خط بينهما

بدأه hicham@com في 25 يونيو 2010 · 7 رد · 648 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

كيف استطيع القيام برسم خط بمجرد النقر بالفأرة في مكانين مختلفين فيرسم الخط

:unsure: :unsure: :unsure:

#2

وعليكم السلام ورحمة الله

عرف النقاط التالية على مستوى الفورم:

private Point pn1,pn2;

ثم اكتب الكود التالي في الحدث Form1_MouseClick ليكون كالتالي :

if (pn1.X==0)
            {
                pn1.X = e.X;
                pn1.Y = e.Y;
            }
            else if (pn2.X==0)
            {
                pn2.X = e.X;
                pn2.Y = e.Y;
                Graphics gr = this.CreateGraphics();
                gr.DrawLine(Pens.Black, pn1, pn2);
                pn1.X = 0;
                pn1.Y = 0;
                pn2.X = 0;
                pn2.Y = 0;
            }

تحياتي :)

1
#3
hfsh80 كتب:

وعليكم السلام ورحمة الله

عرف النقاط التالية على مستوى الفورم:

private Point pn1,pn2;

ثم اكتب الكود التالي في الحدث Form1_MouseClick ليكون كالتالي :

if (pn1.X==0)
            {
                pn1.X = e.X;
                pn1.Y = e.Y;
            }
            else if (pn2.X==0)
            {
                pn2.X = e.X;
                pn2.Y = e.Y;
                Graphics gr = this.CreateGraphics();
                gr.DrawLine(Pens.Black, pn1, pn2);
                pn1.X = 0;
                pn1.Y = 0;
                pn2.X = 0;
                pn2.Y = 0;
            }

تحياتي :)

بارك الله فيك يا أخي علىالاستجابة السريعة

لكني جربت الكود وظهر لي خطأ لم أفهمه

في مستو ى e

errors The name 'e' does not exist in the current context

#4

أخى .. اضف كود الاخ hfsh80 فى Form1_MouseClick

private void Form1_MouseClick(object sender, MouseEventArgs e)
        {
if (pn1.X==0)
            {
                pn1.X = e.X;
                pn1.Y = e.Y;
            }
            else if (pn2.X==0)
            {
                pn2.X = e.X;
                pn2.Y = e.Y;
                Graphics gr = this.CreateGraphics();
                gr.DrawLine(Pens.Black, pn1, pn2);
                pn1.X = 0;
                pn1.Y = 0;
                pn2.X = 0;
                pn2.Y = 0;
            }
        }

لله في الآفاق آيات لعـــل = أقلهـــا هو ما إليه هداكا

ولعل ما في النفس من آياته = عجبٌ عجابٌ لو ترى عيناكا

والكون مشحون بأسرار إذا = حاولت تفسيراً لهــا أعياكا

#5
وماذا بعد؟ كتب:

أخى .. اضف كود الاخ hfsh80 فى Form1_MouseClick

private void Form1_MouseClick(object sender, MouseEventArgs e)
        {
if (pn1.X==0)
            {
                pn1.X = e.X;
                pn1.Y = e.Y;
            }
            else if (pn2.X==0)
            {
                pn2.X = e.X;
                pn2.Y = e.Y;
                Graphics gr = this.CreateGraphics();
                gr.DrawLine(Pens.Black, pn1, pn2);
                pn1.X = 0;
                pn1.Y = 0;
                pn2.X = 0;
                pn2.Y = 0;
            }
        }

شكرا لكم أخوتي وجعلها الله في ميزان حسناتكم هل يمكن شرح لهذا الكود يا إخوتي

:wink: :) :) :lol:

تم تعديل هذه المشاركة بواسطة hicham@com في 26 يونيو 2010 في 11:13

#6

هذه الدالة تنفذ عند النقر بالماوس على الفورم

الفكرة العامة هي أننا نسجل النقطة الأولى عندما يضغط المستخدم بزر الماوس الأيسر ثم نسجل النقطة الثانية عندما يقوم المستخدم بالنقر للمرة الثانية ونرسم الخط الواصل بين النقطين .

if (pn1.X==0)

هذا السطر نتأكد منه أننا لم نسجل النقطة الأولى بعدها إن كان الشرط صحيح يقوم البرنامج بأخذ النقطة التي نقر منها المستخدم واسنادها للـ X والـ Y الخاصة بالنقطة الأولى كما يلي :

pn1.X = e.X; 
pn1.Y = e.Y;

عبارة else وما بعدها ينظر إليها البرنامج في حالة عدم تحقق الشرط الأول ( أي أن النقطة الأولى قد تم تسجيلها بالفعل ) لذلك يقوم بعدها بأخذ النقطة التي نقر منها المستخدم واسنادها للـ X والـ Y الخاصة بالنقطة الثانية :

pn2.X = e.X; 
pn2.Y = e.Y;

ثم نقوم برسم الخط الذي يصل النقطتان ببعضهما :

Graphics gr = this.CreateGraphics(); 
gr.DrawLine(Pens.Black, pn1, pn2);

وأخيرا نقوم بإعادة النقاط للصفر :

pn1.X = 0; 
pn1.Y = 0; 
pn2.X = 0; 
pn2.Y = 0;

تحياتي

1
#7
hfsh80 كتب:

هذه الدالة تنفذ عند النقر بالماوس على الفورم

الفكرة العامة هي أننا نسجل النقطة الأولى عندما يضغط المستخدم بزر الماوس الأيسر ثم نسجل النقطة الثانية عندما يقوم المستخدم بالنقر للمرة الثانية ونرسم الخط الواصل بين النقطين .

if (pn1.X==0)

هذا السطر نتأكد منه أننا لم نسجل النقطة الأولى بعدها إن كان الشرط صحيح يقوم البرنامج بأخذ النقطة التي نقر منها المستخدم واسنادها للـ X والـ Y الخاصة بالنقطة الأولى كما يلي :

pn1.X = e.X; 
pn1.Y = e.Y;

عبارة else وما بعدها ينظر إليها البرنامج في حالة عدم تحقق الشرط الأول ( أي أن النقطة الأولى قد تم تسجيلها بالفعل ) لذلك يقوم بعدها بأخذ النقطة التي نقر منها المستخدم واسنادها للـ X والـ Y الخاصة بالنقطة الثانية :

pn2.X = e.X; 
pn2.Y = e.Y;

ثم نقوم برسم الخط الذي يصل النقطتان ببعضهما :

Graphics gr = this.CreateGraphics(); 
gr.DrawLine(Pens.Black, pn1, pn2);

وأخيرا نقوم بإعادة النقاط للصفر :

pn1.X = 0; 
pn1.Y = 0; 
pn2.X = 0; 
pn2.Y = 0;

تحياتي

شكرا لك أخي على هذا الشرح الوافي وجعله الله في ميزان حسناتك

وبارك الله لكم في علمكم

:lol: :) :P

#8
hfsh80 كتب:

هذه الدالة تنفذ عند النقر بالماوس على الفورم

الفكرة العامة هي أننا نسجل النقطة الأولى عندما يضغط المستخدم بزر الماوس الأيسر ثم نسجل النقطة الثانية عندما يقوم المستخدم بالنقر للمرة الثانية ونرسم الخط الواصل بين النقطين .

if (pn1.X==0)

هذا السطر نتأكد منه أننا لم نسجل النقطة الأولى بعدها إن كان الشرط صحيح يقوم البرنامج بأخذ النقطة التي نقر منها المستخدم واسنادها للـ X والـ Y الخاصة بالنقطة الأولى كما يلي :

pn1.X = e.X; 
pn1.Y = e.Y;

عبارة else وما بعدها ينظر إليها البرنامج في حالة عدم تحقق الشرط الأول ( أي أن النقطة الأولى قد تم تسجيلها بالفعل ) لذلك يقوم بعدها بأخذ النقطة التي نقر منها المستخدم واسنادها للـ X والـ Y الخاصة بالنقطة الثانية :

pn2.X = e.X; 
pn2.Y = e.Y;

ثم نقوم برسم الخط الذي يصل النقطتان ببعضهما :

Graphics gr = this.CreateGraphics(); 
gr.DrawLine(Pens.Black, pn1, pn2);

وأخيرا نقوم بإعادة النقاط للصفر :

pn1.X = 0; 
pn1.Y = 0; 
pn2.X = 0; 
pn2.Y = 0;

تحياتي

بارك الله فيك أخي .. +1

118650.jpg

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…