PDA

View Full Version : حرفه ای: حركات كامپوننت ها در فرم.



sds1920
یک شنبه 30 خرداد 1389, 16:51 عصر
سلام خدمت همه.
مي خواست بپرسم چطور مي شه كامپوننت ها رو روي فرم حركت داد.
منظورم حركت معمولي نيست.حركت انيمشن وار هست.
مثلا شما فرض كني 10 تا Button داريم كه مي خوايم اين 10 تا Button حركت بيضي وار يا يه حركتي مثل اين داشته باشن.
با تايمر مي شه يه كارهايي كرد ولي خيلي خوب از كار در نمياد.
حالا مي خواستم نظر شما عزيزان رو بپرسم.

sds1920
چهارشنبه 23 تیر 1389, 16:32 عصر
هنوز چیزی به فکر کسی نرسیده؟

vandermond
چهارشنبه 23 تیر 1389, 16:37 عصر
خب بايد با معادله و .... ش كار كني. چرا با تايمر خوب نميشه؟ اگه اينتروال تايمر رو كم بزاري و مقدار حركت رو هم كم بزاري كه مشكلي فكر نميكنم داشته باشه.
اگه شد يه نمونه برات ميزارم تا آخر شب(اگه وقت اجازه بده)

sds1920
جمعه 25 تیر 1389, 10:49 صبح
ممنون دوست عزیز.ولی وقتی Interval کم بشه فرم مثل این می مونه که داره جون می کنه.
اگه این مقدار هم کافی نباشه خوب نمی شه.
در هر صورت من خیلی عجله ای ندارم.
فقط می خوام به نتیجه مطلوب برسیم.
بازم ممنون.

hossein_ignore
جمعه 25 تیر 1389, 10:58 صبح
من فک نمیکنم با #C خالی به نتیجه ی مطلوبی برسی! اما اگه رو جون کندن Form مشکل داری باید از Thread برای حرکت Object ها استفاده کنی، اونوقت برنامت جون نمیکنه!

sds1920
جمعه 25 تیر 1389, 11:02 صبح
من فک نمیکنم با C#‎ خالی به نتیجه ی مطلوبی برسی! اما اگه رو جون کندن Form مشکل داری باید از Thread برای حرکت Object ها استفاده کنی، اونوقت برنامت جون نمیکنه!

من بلد نیستم با Thread کار کنم.فقط می دونم برای اینه که چندتا کار با هم به طور موازی انجام بشه.یه کم بیشتر توضیح بدین.برای این کار چه namespace و چه کلاس هایی می تونم استفاده کنم؟

hossein_ignore
جمعه 25 تیر 1389, 11:20 صبح
این صفحه رو نگاه کن
http://www.barnamenevis.org/forum/showthread.php?t=226118&page=3

exlord
جمعه 25 تیر 1389, 19:11 عصر
public partial class Form2 : Form
{
private Thread tMove;
private delegate void MoveDelegate();
MoveDelegate moveDel;
public Form2()
{
InitializeComponent();
tMove = new Thread(new ThreadStart(tMove_Start));
moveDel = new MoveDelegate(MoveDel_Start);

}

private void Form2_Load(object sender, EventArgs e)
{

}

void MoveDel_Start()
{
button1.Left += 1;
button4.Left += 1;
button5.Left += 1;
button6.Left += 1;
}
void tMove_Start()
{
while (true)
{
this.Invoke(moveDel);
Thread.Sleep(10);
}
}

private void button2_Click(object sender, EventArgs e)
{
tMove.Start();
}
private void button3_Click(object sender, EventArgs e)
{
tMove.Abort();
}

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
tMove.Abort();
}

}

نوع حرکتشم خودت درست کن .....

محسن شامحمدی
جمعه 25 تیر 1389, 22:52 عصر
با سی شارپ این تنها راهه ولی با wpf می تونی انیمیشن درست کنی و ضمنا حرکات حتی بیضی وار و کج و کوله و نامنظم هم بدی