PDA

View Full Version : تشخیص دادن رفتن یک کنترل بر روی کنترل دیگر در C#



hsn_secret
یک شنبه 16 خرداد 1395, 23:25 عصر
سلام .
وقت همگی بخیر .

من دوتا کنترل pictureBox دارم .
سوالم این هستش که چگونه زمانی که کنترل اول بر روی کنترل دوم رفت متوجه این منظورم بشم ؟

mrprestige
دوشنبه 17 خرداد 1395, 19:11 عصر
سلام .
وقت همگی بخیر .

من دوتا کنترل pictureBox دارم .
سوالم این هستش که چگونه زمانی که کنترل اول بر روی کنترل دوم رفت متوجه این منظورم بشم ؟

سلام دوست من ، شما میتونی هر کنترل picbox ت رو داخل یه کنترل Panel بزاری و خاصیت visible هرجفتش رو false کن بعد یه شرط براش بزاری که اگه پنل اول روی پنل دوم بود visible اون True و در غیر این صورت False بشه و یا برعکس

پیروز و موفق باشید.
از کدنویسی لذت ببرید.

دلتنگ اسمان
دوشنبه 17 خرداد 1395, 19:13 عصر
سلام
منظورتون از اینکه کنترل اولی بر روی کنترل دومی بره یعنی چی؟ اگه منظورتون این که هر دو کنترل دقیقا بر روی هم منطبق بشن میتونید از خاصیت لوکیشن (location) کنترلها استفاده کنی

hsn_secret
دوشنبه 17 خرداد 1395, 19:23 عصر
سلام با تشکر از شما .


سلام دوست من ، شما میتونی هر کنترل picbox ت رو داخل یه کنترل Panel بزاری و خاصیت visible هرجفتش رو false کن بعد یه شرط براش بزاری که اگه پنل اول روی پنل دوم بود visible اون True و در غیر این صورت False بشه و یا برعکس

پیروز و موفق باشید.
از کدنویسی لذت ببرید.

نه من نمیخوام از پنل استفاده کنم .
فقط نیاز دارم زمانی که مثلا اگر pic1 روی گوشه ای از pic2 بود ، من متوجه این منظور بشم .

hsn_secret
دوشنبه 17 خرداد 1395, 19:25 عصر
سلام با تشکر از شما .

سلام
منظورتون از اینکه کنترل اولی بر روی کنترل دومی بره یعنی چی؟ اگه منظورتون این که هر دو کنترل دقیقا بر روی هم منطبق بشن میتونید از خاصیت لوکیشن (location) کنترلها استفاده کنی

بله اگر کنترل اولی بر روی کنترل دومی بره ، حالا چه قسمتی از اون یا کل اون بر روی کنترل دومی بره .
من تنها میخوام زمانی که اگر حتی گوشه ای از کنترل اولی بر روی کنترل دومی وجود داشت متوجه بشم .

mrprestige
دوشنبه 17 خرداد 1395, 19:38 عصر
سلام با تشکر از شما .



نه من نمیخوام از پنل استفاده کنم .
فقط نیاز دارم زمانی که مثلا اگر pic1 روی گوشه ای از pic2 بود ، من متوجه این منظور بشم .

متوجه شدم شما میخواین Collision (تصادف) بین کنترل رو تشخیص بدید

if (pictureBox1.Bounds.IntersectsWith(pictureBox2.Bou nds))
{
MessageBox.Show("ایجاد برخورد");
}


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

پیروز وموفق باشی .

ژیار رحیمی
دوشنبه 17 خرداد 1395, 19:39 عصر
دوست گرامی با چک مختصات قرار گیری PictureBox ها روی فرم میتونی حالت Overlap بودن رو بررسی کنی.تو انجمن بخش نمونه برنامه های کوچک جستجو کن به نتیجه میرسی.

sajaaaaad
دوشنبه 17 خرداد 1395, 19:46 عصر
خب دیگه همینجوری که دل تنگ آسمان اشاره کرد میتونی از لوکیشن و طول عرض شون استفاده کنه.


private void Form1_SizeChanged(object sender, EventArgs e)
{
int x = pictureBox1.Location.X;
int y = pictureBox1.Location.Y;


int EndPic1X = x + pictureBox1.Width;
int EndPic1Y = y + pictureBox1.Height;


if (pictureBox2.Location.X < EndPic1X && pictureBox2.Location.Y < EndPic1Y)
MessageBox.Show("برخورد دو عکس");
}