PDA

View Full Version : سوال: موقعیت کرسر ماوس در دایره



aaaaammmm
پنج شنبه 11 شهریور 1389, 18:22 عصر
می دانیم در رویداد MouseMove یا نظیر آن با دستور e.x یا e.y موقعیت کرسر ماوس بدست می آید.فرض کنیم با دستورات وتوابع گرافیکی یک دایره یا بیضی برروی فرم رسم می کنیم

Graphics g;
System.Drawing.Pen p = new Pen(Color.Blue);
g.DrawEllipse(p, 100, 200, 300, 300);
چگونه میشود بررسی کرد که کرسر ماوس در محیط بیضی یا دایره رسم شده قرار دارد؟(اگر شکل ترسیمی مستطیل باشد با کد زیر می توان بررسی کرد که آیا کرسر داخل محیط مستطیل قرار دارد یا نه؟
g.DrawRectangle (p,100,100,300,300);
if(e.X>100 && e.X <400 && e.Y >100 && e.Y <400)
//Do what You Want
سوال:چگونه بررسی کنیم که کرسر ماوس داخل محیط بیضی یا دایره قرار دارد؟

Sajjad.Aghapour
شنبه 13 شهریور 1389, 19:33 عصر
سلام دوست عزیز
درباره HotSpot جستجو کنید...

aaaaammmm
یک شنبه 14 شهریور 1389, 20:32 عصر
سلام دوست عزیز
درباره HotSpot جستجو کنید...


رفتم دنبالش چیزی دستگیرم نشد.اگه ممکنه خودتون زحمتشو بکشید

aaaaammmm
یک شنبه 14 شهریور 1389, 23:46 عصر
هل من ناصر ینصرنی؟

Diaco.10727
دوشنبه 15 شهریور 1389, 21:13 عصر
سلام دوست عزیز.
فایلی که ضمیمه کردم مشکلت رو حل میکنه.

mojtaba_e
دوشنبه 15 شهریور 1389, 22:31 عصر
چرا از یک الگوریتم در رخ داد Mouse Move استفاده نمی کنی که مقدار x , y رو بگیره و بده به معادله دایره یا بیضی اگر داخل اون این اشکال بود که ........ اگر نبود ............

aaaaammmm
دوشنبه 15 شهریور 1389, 23:00 عصر
چرا از یک الگوریتم در رخ داد Mouse Move استفاده نمی کنی که مقدار x , y رو بگیره و بده به معادله دایره یا بیضی اگر داخل اون این اشکال بود که ........ اگر نبود ............

همین که فرمودی چطور میشه؟کد؟

mojtaba_e
سه شنبه 16 شهریور 1389, 01:19 صبح
برای دایره تابع زیر را استفاده کن



/// <summary>
/// Mouse position
/// </summary>
/// <param name="Center_X">مرکز دایره بر روی محور افقی</param>
/// <param name="Center_Y">مر کز دایره بر روی محور عمودی</param>
/// <param name="Mouse_X">مکان موس بر روی محور افقی</param>
/// <param name="Mouse_Y">مکان موس بر روی محور عمودی</param>
/// <param name="Radius">شعاع دایره</param>
/// <returns>اگر صحیح باشد یعنی موس درون دایره قرار دارد</returns>
public Boolean Test(int Center_X, int Center_Y, int Mouse_X, int Mouse_Y, int Radius)
{
int Result;
Result = ((Center_X - Mouse_X) ^ 2 + (Center_Y - Mouse_Y) ^ 2);
if (Result <= Radius)
{
//mouse in circle
return true;
}
else
{
//mouse out circle
return false;
}
}

*************************************************
و برای بیضی هم معادلش رو دقیقا نمی دونم چیه