السلام عليكم ورحمة الله وبركاته
كيف استطيع القيام برسم خط بمجرد النقر بالفأرة في مكانين مختلفين فيرسم الخط
:unsure: :unsure: :unsure:
السلام عليكم ورحمة الله وبركاته
كيف استطيع القيام برسم خط بمجرد النقر بالفأرة في مكانين مختلفين فيرسم الخط
:unsure: :unsure: :unsure:
وعليكم السلام ورحمة الله
عرف النقاط التالية على مستوى الفورم:
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;
}تحياتي :)
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
أخى .. اضف كود الاخ 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;
}
}لله في الآفاق آيات لعـــل = أقلهـــا هو ما إليه هداكا
ولعل ما في النفس من آياته = عجبٌ عجابٌ لو ترى عيناكا
والكون مشحون بأسرار إذا = حاولت تفسيراً لهــا أعياكا
وماذا بعد؟ كتب:أخى .. اضف كود الاخ 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
هذه الدالة تنفذ عند النقر بالماوس على الفورم
الفكرة العامة هي أننا نسجل النقطة الأولى عندما يضغط المستخدم بزر الماوس الأيسر ثم نسجل النقطة الثانية عندما يقوم المستخدم بالنقر للمرة الثانية ونرسم الخط الواصل بين النقطين .
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;
تحياتي
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
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
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…