تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مساعدة في نقر الماوس على PictureBox
#1
السلام عليكم

اخواني

لدي مشروع موجود به picturebox ويقوم بالتقاط صورة لشاشة الجهاز عند فتحه 

الان انا اعرف كيف اقوم بجعل الماوس ينقر على postion معين في الشاشة 


ولكن لم اعرف كيف احتسب postion picturebox بالنسبة للشاشة يعني اجعل عندما اضغط على مثلا داخل picturebox عند صورة form1 كما هو موضح بالصورة ...يجعله يقوم بالنقر بشكل حقيقي على الشاشة الكامله




انا اعرف موضوي معقد ويمكن ما عرفت اوصل الفكرة ولكن باختصار شديد اعتبر Picturebox اعتبارا انها RemoteDesktop ولما تضغط عليها انت عمم تتحكم بششاشة الجهاز  


ارجوا انو وضحة وشكرا لكم



كود لتحديد Postion  في picturebox عند الضغط عيها 

كود :
 Private Sub PictureBox1_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs) Handles PictureBox1.MouseClick
        PPoint = New Point(e.X, e.Y)
        MsgBox(e.X & " , " & e.Y)

    End Sub


وهذا كود لتغير مكان mouse 
اي postion الخاص به


كود :
 Private Declare Function SetCursorPos Lib "user32.dll" ( _
ByVal X As Int32, _
ByVal Y As Int32 _
) As Boolean

والاستدعاء :
كود :
  SetCursorPos(5, 5)

وتغير الرقمين 5


و كود النقر 

كود :
Private Declare Sub mouse_event Lib "user32.dll" ( _
    ByVal dwFlags As Int32, _
    ByVal dx As Int32, _
    ByVal dy As Int32, _
    ByVal cButtons As Int32, _
    ByVal dwExtraInfo As Int32 _


والاستدعاء بالنقر يمين او شمال mouse

كود :
 mouse_event(&H2, 0, 0, 0, 1)

        mouse_event(&H4, 0, 0, 0, 1




الصورة المرفقة فيها برنامجي Form1 ملتقط صورة للشاشة  والشاشة الاصلية 


الملفات المرفقة صورة/صور
   
الرد }}}}
تم الشكر بواسطة:
#2
سلام


لم افهم مقصد بشكل واضح

ولكن MousePosition تعطيك احداثيات x,y المؤشر بالنسبه للشاشه كامله مثل
Dim myX As Integer = MousePosition.X
Dim myY As Integer = MousePosition.Y


موفقين
متغيب
الرد }}}}
تم الشكر بواسطة: ILI
#3
لكي تتم الحسابات بشكل دقيق عليك أن تربط إحداثيات Bounds و Location الخاصيين ب PictureBox مع نفطة الصفر لشاشة الكمبيوتر و نقطة الصفر هنا هي النقطة الموجودة في أعلي يسار شاشة الكمبيوتر , وبما أن PictureBox نفسه موجود داخل Form إذن عليك أن تربط إحداثيات الفورم أيضا مع نقطة الصفر و هنا ستجد انك تقوم بعملية مزدوجة لكي تقوم بمثل تلك العمليات الحسابية لذلك و بدلا من استخدام PictureBox عليك ان تستخدم الفورم نفسه بشكل مباشر في أخذ الصورة من سطح الكمبيوتر  

وعلي فكرة أنت لست في حاجة أن تتستخدم UnManaged Code لتحديد أماكن الماوس أو تغيير شكل Cursor فكل هذا من الممكن ان يتم داخل احداث مثل Mouse Down و Mouse Move و Mouse Up

عموما انا اعمل علي فكرة مشابهة و قاربت علي الإنتهاء من كتابة الكود و ربما غدا أضع الكود في قسم المقالات ليستفيد منه الجميع

ولأنه مش واضح قوي ماذا تريد أن تفعل لكن أنا أتوقع أنك تريد تحديد مكان جزء معين من الصورة الموجودة داخل Picturebox لذلك عليك ان تستخدم MousePosition لتحديد مكان الماوس علي شاشة الكمبيوتر ثم تقوم بتعريف مستطيل مركزه تلك النقطة و تحدد أنت أبعاده ثم تقوم بنقل احداثيات مركز المستطيل لتحديد مكانه علي سطح الكمبيوتر وربما عليك أن تربطه مع مكان PictureBox Control لذلك وإن كانت توقعاتي صحيحة يمكنك أن تبدأ من هنا حيث ستجد بعض الأفكار في اللينك التالي

اللينــــــــــــــــــك
الرد }}}}
تم الشكر بواسطة: الطالب , ILI
#4
اخواني هذه احدى محاولاتي (الصورة في المرفقات)



Postion Mouse هو Postion الخاص بالماوس في شاشة الوندز 

Postion Image هو Postion الماوس ولكن فقط على PictureBox الموجودة في الفورم

Result Postion وهو محاولتي في ايجاد postion الحقيقي اقصد تاع Screen والذي يجب ان يكون كما هو في Postion Mouse


ولكن لم ينفع

محاولتي :
الكود :

كود :
Public Class Form1
    Dim screenWidth As Integer = Screen.PrimaryScreen.Bounds.Width
    Dim screenHeight As Integer = Screen.PrimaryScreen.Bounds.Height
   
   
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       



    End Sub
  
   





    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim myX As Integer = MousePosition.X
        Dim myY As Integer = MousePosition.Y

     

        Label1.Text = "Postion Screen :" & myX & "-" & myY

    End Sub

   

    Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
        Dim PPoint = New Point(e.X, e.Y)
        Label2.Text = "Postion Image : " & e.X & " - " & e.Y
        Dim a As Integer = (e.X * (screenWidth / PictureBox1.Width))
        Dim b As Integer = (e.Y * (screenHeight / PictureBox1.Height))
        Label3.Text = " Result Postion :" & a & "-" & b
    End Sub
End Class


الملفات المرفقة صورة/صور
   
الرد }}}}
تم الشكر بواسطة:
#5
ههههههههههههههه
اخواني كود السابق صحيح ويعطي المطلوب وتم الحل  Big Grin Big Grin Big Grin Big Grin


والتوضيح : في المرفقات بالصورة


الملفات المرفقة صورة/صور
   
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Star [VB.NET] السلام عليكم اخوتي ف المنتدى احتاج الي مساعدة انا اصمم منظومة لشؤون العاملين بعد اض fatma anari 2 79 أمس, 11:04 AM
آخر رد: أبوبكر سويدان
  طلب مساعدة ناتج طرح عددين قيمة سالبه khalaroy 2 46 01-12-16, 03:09 AM
آخر رد: khalaroy
  [سؤال] مساعدة في الفيجوال بيسك عبدالرحمن المكاوي 1 59 28-11-16, 02:11 PM
آخر رد: عبدالرحمن المكاوي
  مساعدة في عمل برنامج rabeh.ram 4 171 27-11-16, 12:29 AM
آخر رد: rabeh.ram
  مساعدة في انشاء ثيم عبدالرحمن المكاوي 11 286 25-11-16, 11:57 AM
آخر رد: العزابي
  مساعدة في عرض البيانات في التقرير haiderkh 1 71 21-11-16, 11:24 PM
آخر رد: السرور
  مساعدة بخصوص Listbox CLARO 3 79 16-11-16, 06:15 PM
آخر رد: silverlight
  [VB.NET] مساعدة بسيطة في الكمبوبكس . أبووسم 3 83 16-11-16, 11:58 AM
آخر رد: أبووسم
  مساعدة فى برنامج ارسال رسائل sms للموبايل nabil.1710 2 77 13-11-16, 12:00 PM
آخر رد: أبوبكر سويدان
Question [سؤال] مشكلة محيرتني هل من مساعدة shwehdi4pc 14 2,109 10-11-16, 03:55 PM
آخر رد: أبوبكر سويدان

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


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