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

تحديد نقطة عن طريق نقرة الماوس على الصورة

بدأه السديم في 10 مارس 2009 · 14 رد · 1,059 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

ابي احدد نقاط على الصورة

جربته على form زبطت

لم جربتها على الصورة الكود في الاسفل

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Circle (X + Picture1.Left, Y + Picture1.Top), 10, vbRed

End Sub

ولكن يكون التحديد خلف الصورة هذا اول مشكلة وجهتني

وشغله الثاني اذا اردت حذف النقطه تنحذف

وشغلة الثالثة اذا اردت سحب النقطه تنسحب

#2

بســم الله الـرحمــن الرحيــم

أخى العزيز السديم :

إنك أخطأت هنا في حكاية الرسم علي الـ PictureBox لأننا عندما نكتب كما كتبت أنت :

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Circle (X + Picture1.Left, Y + Picture1.Top), 10, vbRed

End Sub

لاحظ هنا كتبت (Circle) بدون تحديد الأداة التى تتبعها هذه الداله و في هذه الحاله فإن الكمبيوتر يفهم أن هذا الأمر يتبع الفورم

ولكى تستطيع رسم دائرة على الـ PictureBox يجب أن تكتب الكود التالى :

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Picture1.Circle (X, Y), 100, red

End Sub

لاحظ هنا كتبنا (Picture1.Circle) بدلا من (Circle) وبتلك الطريقه يفهم الكمبوتر أن الدلة (Circle) تتبع بالطبع الـ PictureBox

و بالنسبه للمشكله الثانيه ما عليك إلا أن تمسح محتويات الـ PictureBox عن طريق الدالة (Cls)

Picture1.Cls

و بالنسبة للمشكلة الثالثة :

إنك تريد أن تحرك تلك النقطة أو الدائره أو أيا كان هذا الشكل و في هذه الحاله لا أستطيع أن أفيدك

و لكن أرجو ممن لديه المعلومه ألا يتأخر ولا يبخل علينا .

و السلام ختام .....

تم تعديل هذه المشاركة بواسطة captinflent في 10 مارس 2009 في 22:01

السلام على من إتبع السلام وخشي وجه ربه ذو الجلال والإكرام

#3

بالنسبة للسؤال الأول، بدل:

Circle (X + Picture1.Left, Y + Picture1.Top), 10, vbRed

إجعلها:

Picture1.Circle (X , Y), 10, vbRed

بالنسبة لحذف نقطة فهناك الأمر Cls يمكن استعماله كالتالي:

Picture1.Cls

لكن هذا يمسح كل ما رسمته على الصورة، أما إذا أردت مسح نقطة واحدة، فيمكنك مثلاً التحايل، وتلوينها بلون الخلفية.

بالنسبة للثالثة، الفكرة غير واضحة تماماً عندي.

------------

لم يكن ردك موجوداً حين كنت أكتب يا كابتن :)

تم تعديل هذه المشاركة بواسطة Abboodd في 10 مارس 2009 في 21:59

هذه الجملة خاطئة  :wacko: 


#4
captinflent كتب:
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Picture1.Circle (X, Y), 100, red

End Sub

لاحظ هنا كتبنا (Picyure1.Circle) بدلا من (Circle) وبتلك الطريقه يفهم الكمبوتر أن الدلة (Circle) تتبع بالطبع الـ PictureBox

و بالنسبه للمشكله الثانيه ما عليك إلا أن تمسح محتويات الـ PictureBox عن طريق الدالة (Cls)

Picture1.Cls

ما شاء الله عليك اخي captinflent

الاول هذا المطلوب ولكن عند المسح دالة Cls

يمسح جميع النقاط

الف شكر على الرد الجميل

#5

و لا يهمك يا أخي abboodd زيادة الخير خيرين

و للتوضيح إن الأخ العزيز السديم يريد بعد رسم النقطة أو الدائرة أن يسحبها من مكان لأخر داخل الـ PictureBox .

السلام على من إتبع السلام وخشي وجه ربه ذو الجلال والإكرام

#6

اخي Abboodd

الف شكر على الرد

اوضح اكثر

عند تحديد نقطة على نقطه معينة في الصورة ووجدنا خطا ما

ممكن حذف نقطة التحديد او سحبها الى المكان المطلوب

اتمنى انه تكون واضحها

جاءتني فكرة ولكن لم اعرف ان اطبقها

اني اضع مكان التحديد صورة "x" ويمكن تحريك هذه الصورة الى مكان التحديد او حذفها نهائي

#7

بســم الله الـرحمــن الرحيــم

نعم أخي السديم فهذه الداله (Cls) تقوم بمسح جميع الرسومات على الـ PictureBox

و لكن يمكنك التحايل على البرنامج كما أخبرنا الأخ العزيز abboodd

اقتباس
أما إذا أردت مسح نقطة واحدة، فيمكنك مثلاً التحايل، وتلوينها بلون الخلفية.

و السلا ختام .....

السلام على من إتبع السلام وخشي وجه ربه ذو الجلال والإكرام

#8

يعطيك الف عافية على المتابعة اخي captinflent

ياليت توضح لي ما هي طريقة التحايل، وتلوينها بلون الخلفية؟

#9

أعتقد أنه يمكنك التحايل في حاله واحده إذا كنت تعلم إحداثيات هذه النقطه بالضبط

و في هذه الحاله يمكنك أن ترسم نقطه أخري في نفس الإحداثيات و لكن مع تغيير لون الرسم لجعله كلون الخلفيه

و السلام ختام .....

تم تعديل هذه المشاركة بواسطة captinflent في 10 مارس 2009 في 22:25

السلام على من إتبع السلام وخشي وجه ربه ذو الجلال والإكرام

#10

السلام عليكم أيها السديم، والكابتن :)

بالنسبة لمسح نقطة، إذا افترضنا مثلاً أن لون الخلفية أبيض، فيمكنك عمل الكود نفسه تماماً ولكن بتغيير اللون من vbRed إلى vbWhite، أما إذا كان لونها غير معروف بالنسبة إليك، فيمكنك مثلاً أن تعرف متغيراً ما تسميه OldColor تحفظ فيه اللون القديم، هكذا مثلاً:

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

OldColor=Picture1.Point(X,Y)
Circle (X , Y ), 10, vbRed

End Sub

ثم عندما تريد حذفها:

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Circle (X , Y ), 10, OldColor

End Sub

طبعاً الطريقة غير عملية تماماً، أخبرني متى تريد حذفها، عند الضغط عليها أم عند ضغط Del أم متى، ومن الأفضل رفع مشروع.

بالنسبة للنقطة الأخيرة، فأيضاً يمكنك مسحها عند الضغط عليها كما في الكود السابق، ثم إعادة رسمها في المكان الجديد بواسطة الحدث MouseUp

قد يفيدك أكثر إذا اردت أن تتعامل مع هذه النقطة على أنها كائن يمكن تحريكه وإزالته وووو.... استعمال أداة Shape فهذه قد تكون أفضل كثيراً في هذه الحالة، لأن الأمر Circle هو أمر لرسم دائرة ميتة، ليس لها أي خواص أو طرق (Methods).

اشرح أكثر أنت لماذا تريد عمل هذا،وما التقنية التي تبحث عنها. لعلنا نفيدك أكثر

وفقك الله

تم تعديل هذه المشاركة بواسطة Abboodd في 11 مارس 2009 في 07:07

هذه الجملة خاطئة  :wacko: 


#11

بســم الله الـرحمــن الرحيــم

أخي abboodd :

و هل تعتقد أن أداة الـ Shape لها أحداث ؟؟

نحن نحتاج في هذه الحاله أداه لها أحداث و بالذات Mouse Move , Mouse Down , Mouse Up , Key Press

و أعتقد أن أداة Shape لا يوجد بها أى أحداث .

السلام على من إتبع السلام وخشي وجه ربه ذو الجلال والإكرام

#12

لا ليس بها أحداث، ولكن بها خواص مثل Top و Left ووو، أما الرسم بالأوامر، فليس له أية صفات، أو خواص.

هذه الجملة خاطئة  :wacko: 


#13

السلام عليكم...

المشروع المرفق يحتوي - إن شاء الله - على المطلوب. لإضافة نقطة إلى الـ PictureBox انقر بالزر الأيسر مع الضغط على المفتاح Ctrl. يمكنك تحريك و حذف النقاط كما تشاء.

يحتوي البرنامج أيضاً على زر لتثبيت النقاط بحيث يتم رسمها بشكل نهائي على الـ PictureBox و لا يعود بالإمكان حذفها أو تحريكها.

يحتوي الكود على توضيح مفصل بالعربي.

إذا كنت تريد حفظ النقاط على الصورة مع الاحتفاظ بإمكانية تحريكها و حذفها حتى بعد إغلاقها و فتحها فلا شك أنك ستحتاج إلى إجراء أوسع من ذلك، و ربما يتطلب الأمر إنشاء نوع ملفات خاص ببرنامجك لحفظ النقاط ككائنات و تحميلها عند فتح الملف.

على أية حال يمكنك الاستفادة من كود المشروع و تعديله حسب احتياجاتك.

المرفقات:

PutPoints.rar

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#14

ما شاء الله

أكثر من رائع.

جزاك الله خيراً

هذه الجملة خاطئة  :wacko: 


#15

بســم الله الـرحمــن الرحيــم

رائع أخي najy_zl :

لقد جاءتنى هذه الفكره و لكنى لم أترجمها إلي مشروع .

و جهد رائع .

مشكور .

و السلام ختام ...........

السلام على من إتبع السلام وخشي وجه ربه ذو الجلال والإكرام

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

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

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

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

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