نمایش نتایج 1 تا 5 از 5

نام تاپیک: حرکت کنترل روی فرم ولی با محدودیت مکانی

  1. #1

    حرکت کنترل روی فرم ولی با محدودیت مکانی

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

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

    خوب حالا میخوام که این کنترل رو فقط بتونه روی یک محور دایره یی حرکت کنه و از اون محور داخل یا خارج نشه.

    مثلا یک الکترون از روی مدارش به داخل یا خارج حرکت که نمی کنه! .

    یعنی نتونیم کنترل رو به هر قسمت از فرم جابه جا کنیم فقط حول یک دایره بتونیم بچرخونیم.

    دوستان اگر فکر نمی دونم رفرنسی هر چی که به ذهنتون میرسه بگین شاید به نتیجه برسه!



    مممنون

    بدرود

  2. #2
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: حرکت کنترل روی فرم ولی با محدودیت مکانی

    توی رویداد LocationChanged کنترل بررسی کنید که اون داخل محور هست یا نه.اگه نیست به مکان قبلی (که توی همین رویداد ذخیره کردین) ببریدش. در صورتی که داخل محور هست مقدار آخرین مکان رو بروز کنید.

  3. #3

    نقل قول: حرکت کنترل روی فرم ولی با محدودیت مکانی

    ممنون. مکان قبلی رو که تو همین رویداد هست رو که گفتین متوجه نمیشم. اینو ببینید:



    privatevoid button1_LocationChanged(object sender, EventArgs e)
    {
    double x1, y1;
    for (int i = 1; i <= 360; i++)
    { x1 = 100 * Math.Cos(i * Math.PI / 180) + 300;
    y1 = 100 * Math.Sin(i * Math.PI / 180) + 100;


    if (((Control)sender).Location == newPoint(Convert.ToInt32(x1), Convert.ToInt32(y1)))
    {

    }

    }
    }




  4. #4
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: حرکت کنترل روی فرم ولی با محدودیت مکانی

    فرض من این هست که ابتدای کار (قبل از هر گونه حرکتی) کنترل مورد نظر در یک مکان قابل قبول A (در محدوده) قرار داره.مکان A آخرین مکان قابل قبولی هست که کنترل در اون قرار داشته.
    حالا کاربر میاد کنترل رو از A به B میبره.
    اگه نقطه B در محدوده باشه (که با توجه به دایره بودن محدوده قابل بحث هست)، خوب کاربر کنترل رو به محل صحیحی برده و مشکلی نیست.حالا نقطه جدید نقطه A ی ماست.محل A رو بروز میکنیم.
    اگه نقطه B در محدوده نباشه، کنترل رو به محل قبلیش یعنی A بر میگردونیم.
    البته از اونجا که شما با دایره سر و کار دارین برای کاربر سخت خواهد بود که کنترل رو دقیقا روی دایره حرکت بده.باید به کاربر کمک کرد و مرحله دومی که گفتم بهتره اینطوری باشه:
    اگه نقطه B در محدوده نباشه، کنترل رو به نزدیکترین نقطه به B روی دایره میبریم.حالا نقطه جدید نقطه A ی ماست.محل A رو بروز میکنیم.

    بعلاوه اینکه شما باید برای نگاشت دایره از محیط ریاضی به محیط گرافیکی (پیکسل به پیکسل) یه راهکاری داشته باشید.نمیتونید صرفا با استفاده از توابع مثلثاتی یک نقطه تعیین کنید.چون این نقطه مولفه هاش میتونه اعشاری بشه ولی محیط گرافیکی ما شماره پیکسل (صحیح) دارید.

  5. #5

    نقل قول: حرکت کنترل روی فرم ولی با محدودیت مکانی

    والا من تو یونیتی این کارو اینطوری انجام میدم:

    private void OnMouseDrag(){
    if (lunched)
    return;
    Vector3 mousePos=Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition. y,10));
    mousePos = new Vector3 (mousePos.x, mousePos.y, firstPos.z);
    Vector3 delta = firstPos - mousePos;
    if(Vector3.Distance(firstPos,mousePos)<3)
    {
    transform.position=mousePos;
    }
    else
    {
    transform.position=firstPos-delta.normalized*3;
    }
    }


    اما متاسفانه سی شارپ در حالت عادیnormalize نداره ... اگرم داره من ندیدم ... پس کد بالا رو خودتون شخص سازی کنین درواقع خودتون بخش normalize رو بنویسین (ریاضیه دیگه ... ) حوصله ندارم براتون بنویسم اینو از تو یکی از پروژه هام کپی کردم برای همین از وکتور و خواص اون تو یونیتی استفاده شده ... خودتون دیگه درستش کنین ... (وکتور هارو بکنین پوینت distance هم خودتون با ریاضی بنویسین camera هم شما کاری نداشته باشین خودتون از e مختضات موس رو میتونین بگیرین ... )

تاپیک های مشابه

  1. سوال: حرکت یک کنترل روی فرم به هر جهت ممکن نه فقط 4 جهت اصلی
    نوشته شده توسط hanieh66 در بخش C#‎‎
    پاسخ: 6
    آخرین پست: یک شنبه 08 آذر 1388, 11:05 صبح
  2. سوال: ایجاد کنترل روی فرم با استفاده از کد
    نوشته شده توسط amirh67 در بخش برنامه نویسی در 6 VB
    پاسخ: 4
    آخرین پست: جمعه 16 اسفند 1387, 13:08 عصر
  3. حرکت اشیاء روی فرم در زمان اجرا
    نوشته شده توسط Hadizadeh در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: جمعه 05 بهمن 1386, 18:54 عصر
  4. حرکت اشیا روی فرم
    نوشته شده توسط مهدی رحیم زاده در بخش C#‎‎
    پاسخ: 6
    آخرین پست: جمعه 09 شهریور 1386, 23:06 عصر
  5. نحوه محدود کردن حرکت ماوس روی فرم
    نوشته شده توسط amir_pro در بخش C#‎‎
    پاسخ: 6
    آخرین پست: جمعه 17 فروردین 1386, 23:00 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •