PDA

View Full Version : به دست آوردن مسافت حرکت موس



arefba
دوشنبه 25 مرداد 1389, 00:24 صبح
بسمه تعالی
با سلام
می خواستم بدونم چطور میشه که وقتی کاربر کلید موس رو روی فرم فشار میده سپس اون رو میکشه (با همون فشار ) مسافتش رو بدست بیاریم و برای این کار کد بنویسیم
در واقع لوکیشن طی شده رو می خوام
با تشکر
ممنون

Saeed.Masoumi
دوشنبه 25 مرداد 1389, 00:40 صبح
سلام
دوست عزیزبه این لینک (http://barnamenevis.org/forum/showthread.php?t=195240)مراجعه کنید.ازش ایده بگیرید که مکان کلیک شدن و رها شدن موس را بدست بیاورید.تا اینجا شما دو زوج X,Y دارید سپس ازفرمول تعیین فاصله ی بین دو نقطه در دستگاه دو بعدی استفاده کنید.
اینم فرمولش:

http://www.purplemath.com/modules/xyplane/dist07b.gif

موفق باشید.

arefba
دوشنبه 25 مرداد 1389, 01:00 صبح
خیلی مطلب به درد بخوری بود و کلا لذت بردم
میشه باهاش نقاط مبداء و مقصد رو بدست آورد
چطور نقطه ای که موس کلیک میکنه و تا جای خاصی میکشه رو بدست بیاریم ؟؟

arefba
دوشنبه 25 مرداد 1389, 01:05 صبح
بدست آوردن ایکس و ایگرگ موس رو بلدم اینطوری میشه

private void Form1_MouseDown(object sender, MouseEventArgs e)
{


MessageBox.Show(""+MousePosition.X);



}

اما مشکل من با این کشیدنه هست مثل یه مداد توی پاینت یا مثل صفحات تاچ اسکرین

mmd2009
دوشنبه 25 مرداد 1389, 01:08 صبح
با کد زیر :



private void Form1_MouseDown(object sender, MouseEventArgs e)
{

MessageBox.Show(" x = " + Cursor.Position.X.ToString() +
" * y = " + Cursor.Position.Y.ToString());
}

vandermond
دوشنبه 25 مرداد 1389, 01:09 صبح
دوست عزيز
مثل هميناس كه گفتيد فقط توي متد MouseMove بنويسيد.
موفق باشي

ويرايش: ببين يك x,y (البته قبلا تعريف شده باشن) اوليه زماني كه MouseDown فراخاني شد ميگيري. توي MouseMove هم x,y جديد رو ميگيري. حالا هر كاري ميخاي ميتوني بكني. مسافت ميخاي حساب كني يا هر كار ديگه مثل كشيدن خط كشيدن دايره حركت دادن فرم (با كليك روي خود فرم و درگ) و ...

arefba
دوشنبه 25 مرداد 1389, 01:22 صبح
ممنون
پس من اول ایکس و ایگرگ موس داون رو می گیرم
بعدش توی اونت موس مو هم ایکس و ایگرگ می گیرم
ابتدای خط من میشه موس داون و انتها میشه موس مو
همه ی این x ,y ها رو با x = Cursor.Position.X.ToString میگیرم

درسته دیگه نه ؟؟؟

arefba
دوشنبه 25 مرداد 1389, 01:26 صبح
راهی نیست تا سرعت کشیدن کلیک رو بدست بیاریم ؟؟؟

vandermond
دوشنبه 25 مرداد 1389, 01:38 صبح
ممنون
پس من اول ایکس و ایگرگ موس داون رو می گیرم
بعدش توی اونت موس مو هم ایکس و ایگرگ می گیرم
ابتدای خط من میشه موس داون و انتها میشه موس مو
همه ی این x ,y ها رو با x = Cursor.Position.X.ToString میگیرم

درسته دیگه نه ؟؟؟
نه:لبخند:
ببين مثلا اينطوري:

int x, y;
Graphics objGraph;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
x = e.X;
y = e.Y;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
objGraph = this.CreateGraphics();
objGraph.DrawLine(new Pen(Color.Red), x, y, e.X, e.Y);
}
}

arefba
دوشنبه 25 مرداد 1389, 01:54 صبح
کجای این شبیه حرفایی بود که زده بودید:متفکر:
میشه اون تایمر هم اضافه کنید ببینم کجاش باید بره

arefba
دوشنبه 25 مرداد 1389, 01:56 صبح
میشه این رو توضیح بدید
من اگه بخوام بدونم که کاربر به سمت راست کشیده و یه مسیجی بدم چطور واسش سورس بنویسم ؟؟؟

mmd2009
دوشنبه 25 مرداد 1389, 02:09 صبح
با کد زیر میشه

البته من اینطوری نوشتم شاید هم اشتباه باشه



private void Form1_MouseUp(object sender, MouseEventArgs e)
{
if (c == true)
{
if (j > Cursor.Position.X)
MessageBox.Show("L");
else if (j < Cursor.Position.X)
MessageBox.Show("R");
c = false;
}

}

int j = 0;
bool c = false;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
j = Cursor.Position.X;
c = true;
}