PDA

View Full Version : مختصات نقطه اي از عكس كه ماوس اونجاست؟



mah.yar
یک شنبه 29 اردیبهشت 1387, 14:32 عصر
من ميخوام مختصات نقطه اي از عكس رو كه ماوس اونجاست بدست بيارم. از چه تابعي استفاده كنم؟
به عنوان مثال وقتي از تابع GetCursorPos استفاده ميكنيم، و اگه فرضا رزولوشن مانيتور 1024 در 768 باشه و اگه ماوس رو به گوشه بالا و چپ ببريد اين تابع اعداد 1024 و 768 رو برميگرودنه.
حالا من اومدم از دسكتابم عكس گرفتم و اونو تو برنامه لود كردم حالاميخوام مختصات ماوس رو با توجه به عكس بدست بيارم نه كل مانيتور.
با تشكر

saied_hacker
یک شنبه 29 اردیبهشت 1387, 14:55 عصر
این که گفتی یعنی چی؟

می خای مختصات PictureBox رو به دست بیاری؟

اگه منظورت Pic هست با MouseMove میشه این کارئ کرد.
؟

mah.yar
یک شنبه 29 اردیبهشت 1387, 18:53 عصر
بزاريد اينجوري بگم. من دارم يه برنامه كلاينت سرور مينويسم كه با سرور بتونم مانيتور كلاينت و ببينم.
براي اين كار كلاينت از دسكتابش عكس ميگره و براي سرور ميفرسته و سرور هم تصاوير رو پشت سر هم نشون ميده.
حالا ميخوام وقتي كاربر سرور، روي عكس كليك كرد يا ماوس رو حركت داد مختصاتشو بدست بيارم و براي كلاينت بفرستم تا اونجا هم دقيقا همون عمل انجام بشه.
يه راه اينه كه عكس رو به صورت full screen تو سرور نمايش بدم و اگه رزولوشن هر دو كامپيوتر كلاينت و سرور يكي باشه ميتونم با همون تابع getcursorpos مختصات رو بگيرم و ...
ولي من نميخوام تصوير رو به صورت فول اسكرين نمايش بدم . ميخوام توي يه پيكچرباكس مثلا 600 در 800 نمايش بدم و به همين خاطر ميخوام مختصات ماوس روي عكس رو بدست بيارم. به عنوان مثال اگه ماوس رو روي آيكون ماي كامپيوتر ببريم تابع getcursorpos مقدار X رو 55 يرميگردونه. با اين تفاسير ميخوام وقتي كاربر، ماوس رو روي عكس ماي كامپيوتر برد همون مختصات رو به من بده كه اگه از mosemove استفاده كنم X , Y اي كه ميده خيلي بزرگتر از حالت واقعي هست.
با تشكر

ASKaffash
یک شنبه 29 اردیبهشت 1387, 19:00 عصر
با سلام
با تجانس بین ابعاد فرم وابعاد Screen مشکلت را نمیتوانی حل کنی ؟

mah.yar
یک شنبه 29 اردیبهشت 1387, 19:34 عصر
با سلام
با تجانس بین ابعاد فرم وابعاد Screen مشکلت را نمیتوانی حل کنی ؟

چه جوري؟ اگه ممكنه توضيح بديد. همراه با مثال باشه بهتره.
ممنون

vbhamed
دوشنبه 30 اردیبهشت 1387, 11:44 صبح
سلام

خب اين كه ازين دردسرها نداره

مگه شما عكس نمي گيري توي يك Picture ميزاري

خب توي متد Picture1_MouseMove و Picture1_MouseDown خودش دو تا پارامتر X , Y رو با توجه به تصوير جاري بهت ميده، ربطي هم به مكان فرم روي صفحه نداره

ali_habibi1384
دوشنبه 30 اردیبهشت 1387, 13:30 عصر
منظورتونو کاملا متوجه شدم. کار سختی نیست فقط باید تناسب بزرگی عکس نسبت به کل صفحه نمایش و نیز تفاوت مقدار ثابت top , left عکس رو نسبت به تصویر بدونی و سپس بصورت زیر عمل کن:
مثلا عکست 1000*1400 هستش و صفحه نمایش 10.000 *14.000 هست بنابراین نسبت عکس به صفحه نمایش 0.1 است پس شما باید مختصات رو 10 برابر کنی . درصورتیکه عکس شما دقیقا در مختصات گوشه تصویر قرار دارد یعنی top=0 , left=0 است فقط کافیست مختصات موس بدست اومده از عکس رو در 10 ضرب کنی و در کلاینت تغییر بدی .
اگر عکست در مختصاتی غیر از 0*0 قرار دارد باید اونو به صورت مجازی به مختصات 0*0 انتقال بدی و کار بالا رو مجدد انجام بدی . در این حالت فرض می کنیم مثلا عکست در top=1000, left =2000 قرار دارد در اینجا مخثصات چپ و راست موس رو بدست میاری و از top, left عکس کم میکنی تا مکان 0*0 رو بدست بیاری و نهایتا اونو در 10 ضرب میکنی و روی کامپیوتر کلاینت اعمال می کنی.