PDA

View Full Version : سوال: جابجا کردن مستطیل



shytonak
سه شنبه 06 مرداد 1388, 09:28 صبح
سلام دوستان من تو یکی از فرم هام یه مستطیل دارم که می خوام جابجاش کنم یعنی با دادن طول پیکسل در جهت طول یا عرض مستطیل شروع به حرکت کنه و جابجا بشه.
ممنون میشم راهنمایی کنید.

hozouri
سه شنبه 06 مرداد 1388, 10:07 صبح
دوست عزیز برای جابه جا کردن اشکال گرافیگی باید در همون مختصات شکل رو پاک کنی و در مختصات جدید شکل رو ترسیم کنی.

البته اگر 2 شکل بر روی هم با رنگ متفاوت بر روی صفحه ترسیم شده باشه برای پاک کردن یکی از اشکال باید از الگوریتم دیگه ای استفاده نمایی ...

shytonak
سه شنبه 06 مرداد 1388, 12:11 عصر
دوست من در این حالت شکل در محل اول خود غیب شده و در محل جدید ظاهر میشود اما من می خوام روی فرم حرکت کنه و به محل جدید برسه و متوقف بشه.

RED-C0DE
سه شنبه 06 مرداد 1388, 12:45 عصر
دوست من در این حالت شکل در محل اول خود غیب شده و در محل جدید ظاهر میشود اما من می خوام روی فرم حرکت کنه و به محل جدید برسه و متوقف بشه.
راهی ک در اولین نگاه ب ذهن من رسید:
راه اول : می تونی در بدترین حالت اینکار رو شبیه سازی کنی خودت (چون با اشکال گرافیکی نمی شه مثل یک Control ، رویدادهاش رو راحت بررسی کرد)...
مثلا اگه MouseDown (در Form ِ جاری) توی محدوده Rectangle ِ مورد نظرت بود (در واقع کاربر شروع ب عملیات DragOver می خواد بکنه) ، حالا توی رویداد ِ MouseMove (در Form ِ جاری) عمل DragOver رو شبیه سازی کن برای این Rectangle ، ب اینصورت ک در این رویداد (MouseMove) ، هر دفعه در مختصات e.X , e.Y ، یک Rectangle با همون مشخصات اصلیش بکش و قبلیش رو هم پاک کن(در واقع انگار داره حرکت می کنه)...
برای اینکه حرکات و این ترسیم اشکل زیاد انجام می شه حتما باید از خاصیت DoubleBuffered ِ مربوط ب Form استفاده کنی و بقیه کارهای مربوط ب کار با Graphics هم ک یک روالِ کلی داره ...

راه دوم: شاید از Visual Basic PowerPacks (ک شامل چندین آیتم گرافیکی هستن) بتونی استفاده کنی (یادم نیس ک اونها امکان کنترل رویدادها رو برای اشکال گرافیکی دارن یا نه!)

Unknownlive
سه شنبه 06 مرداد 1388, 12:50 عصر
یک شکل بساز و بگذار در یک Picture Box بعد قابلیت Drag & Drop را به Picture Box بده به همین سادگی

shytonak
سه شنبه 06 مرداد 1388, 13:34 عصر
دوست من میشه Unknownlive (http://barnamenevis.org/forum/member.php?u=98903) میشه یکم بیشتر توضیح بدی یا یه برنامه بزاری که کاملا متوجه بشم.
خودم یه برنامه نوشتم که البته آیتم رو اون طوری که می خوام جابجا میکنه می ذارم یه نگاه بهش بندازید.البته من می خوام یه مستطیل رو تو picture box جابجا کنم این یه نمونه ست.
البته نمی تونم سرعت حرکتش رو تنظیم کنم اگه تونستید سرعتش هم تنظیم کنید ممنون میشم بگید.

Unknownlive
سه شنبه 06 مرداد 1388, 16:00 عصر
پروژه شما را دانلود کردم اما سالم نبود و فرم را اضافه نمی کنه در Solution و یه مشکلی ظاهرا پیش اومه

shytonak
سه شنبه 06 مرداد 1388, 17:08 عصر
دوست من پروژه رو چک کردم سالمه.
ببین من تو این پروژه بجای مربع از یکی از آیتم ها استفاده کردم که وقتی روی باتن کلیک می کنیم آیتمی که مربع فرض شده یه حرکت یکنواخت انجام میده تا به موقعیت جدید برسه و یک دفعه تغییر موقعیت نمی ده.
همین کارو من می خوام برنامه با مربعی که تو پیکچر باکس رسم کردیم انجام بده.

shytonak
سه شنبه 06 مرداد 1388, 18:13 عصر
دوست من این کد رو واسه یکی از آیتم ها قرار بده دقیقا همون کاری می کنه که من می خوام مربع توی پیکچر باکس انجام بده.

for (int ia = 0; ia < 97; ia++)
{
groupBox1.Left += 1;
Application.DoEvents();
}