PDA

View Full Version : سوال: چجوري با ماوس شكل روي فرم را به سمت ديگري بكشيم؟



fayeze
سه شنبه 17 تیر 1393, 13:39 عصر
سلام دوستان من توي فرم يه مربع و يه دايره دارم كه ميخوام با ماوس دايره رو بكشم به يه سمت ديگه ي فرم كدشو ميخواستم!!!
لطفا راهنماييم كنين.

fayeze
سه شنبه 17 تیر 1393, 14:34 عصر
يعني هيشكي نميدونه؟:ناراحت::افسرده:

aliagamon
سه شنبه 17 تیر 1393, 14:49 عصر
اول یه متغیر گلوبال از نوع پوینت بسازین ...
تو رویداد mouseDown مقدار اونو برابر location ارگومان رویداد کنین ...
تو رویداد mouseMove هم اینو بنویس :

button1.Location=new Point(e.X+button1.Location.X- MouseDownLocation.X, e.Y +button1.Location.Y- MouseDownLocation.Y);

fayeze
سه شنبه 17 تیر 1393, 14:52 عصر
اول یه متغیر گلوبال از نوع پوینت بسازین ...
تو رویداد mouseDown مقدار اونو برابر location ارگومان رویداد کنین ...
تو رویداد mouseMove هم اینو بنویس :

button1.Location=new Point(e.X+button1.Location.X- MouseDownLocation.X, e.Y +button1.Location.Y- MouseDownLocation.Y);




ممنون بابت پاسختون چرا باتن نوشتين ؟ شكل دايره كه باتن نيس؟

mmdsharifi
سه شنبه 17 تیر 1393, 15:01 عصر
این کد ها رو تست کنید.

private void Form1_MouseMove(object sender, MouseEventArgs e)
{


if (e.Button==MouseButtons.Left)
{
Graphics graphics = CreateGraphics();
graphics.FillEllipse(new SolidBrush(Color.BlueViolet), e.X-25, e.Y-25, 40, 40);
graphics.Dispose();
}


}
}

aliagamon
سه شنبه 17 تیر 1393, 15:10 عصر
من نحوه کلی کار رو گفتم شما میتونی دایره رو از عکس بگیری یا تو یه پنل یا پیکچر باکس draw کنی ... بعد پنل رو با این روش جا به جا کنی مستقیم تو عکس بخوای جا به جا کنی کار سختیه ... هی باید با هر frame یه بار بیاد کل عکس رو draw کنه ... شما با روشی که گفتم کار کن تو لحظه ی ذخیره سازی عکس نهایی رو draw کن ...

fayeze
سه شنبه 17 تیر 1393, 15:25 عصر
این کد ها رو تست کنید.

private void Form1_MouseMove(object sender, MouseEventArgs e)
{


if (e.Button==MouseButtons.Left)
{
Graphics graphics = CreateGraphics();
graphics.FillEllipse(new SolidBrush(Color.BlueViolet), e.X-25, e.Y-25, 40, 40);
graphics.Dispose();
}


}
}

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

mmdsharifi
سه شنبه 17 تیر 1393, 15:57 عصر
خب می دونید که شرط قرار گیری یک نقطه تو دایره اینکه فاصله اون نقطه از مرکز دایره کوچکتر از شعاعش باشه.به کد زیر نگاه کنید:



bool IsWithinCircle(int centerX, int centerY, int mouseX, int mouseY, double radius)
{
int diffX = centerX - mouseX;
int diffY = centerY - mouseY;
return (diffX * diffX + diffY * diffY) <= radius * radius;
}



برای توقف کردن دایره هم از این تابع استفاده کنید زمانی که True بر می گردونه.
سوالی بود درخدمتم،اگه می تونید کداتونو بدید بیشتر بررسی کنم.