PDA

View Full Version : سوال: مشخص کردن محدوده برای چند نقطه در فرم با X , Y



jaykob
دوشنبه 05 تیر 1396, 10:24 صبح
سلام


من می خوام برنامه ای بنویستم که سه کادر در فرم باشه و وقتی موس رو روی اون محدوده ببرم رنگ اون کادر عوض بشه البته نمی خوام با event ها باشه بلکه می خوام با مقایسه X , Y , Z باشه

ممنون می شم توضیحاتی رو بدید

parvizwpf
دوشنبه 05 تیر 1396, 10:51 صبح
شما برای تشخیص بودن نشانگر موس نیاز به اون ایونت دارید حالا یه مدل اینجوریه که تو استک دیدم:
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();

timer1 = new Timer();
timer1.Interval = 200;
timer1.Tick += timer1_Tick;
timer1.Enabled = false;
}

private bool mEntered;
private void Form3_Load(object sender, EventArgs e)
{
if (ClientRectangle.Contains(PointToClient(Control.Mo usePosition)))
{
bool aBool = true;//breakpoint
bool two = aBool;
}
}

private void timer1_Tick(object sender, EventArgs e)
{
bool entered = panel1.ClientRectangle.Contains(panel1.PointToClie nt(Cursor.Position));
if (entered != mEntered)
{
mEntered = entered;
if (!entered)
{
timer1.Enabled = false;
// OK, Do something, the mouse left the parent container
this.Text = "OK";
}
else
{
this.Text = "Not OK";
}
}
}

private void panel1_MouseEnter(object sender, EventArgs e)
{
timer1.Enabled = true;
}
}

jaykob
دوشنبه 05 تیر 1396, 19:17 عصر
سلام

ممنون از شما

دوستان کس دیگه ای نمی تونه توضیح مفصل تری بده برای من مهم اینه که یک فنس کشیده بشه و اگر نقطه x y z من در این محدوده بود به طور مثال یک پیام بده

تشکر

336699
دوشنبه 05 تیر 1396, 19:23 عصر
سلام

ممنون از شما

دوستان کس دیگه ای نمی تونه توضیح مفصل تری بده برای من مهم اینه که یک فنس کشیده بشه و اگر نقطه x y z من در این محدوده بود به طور مثال یک پیام بده

تشکر

منظور از فنس چیه ؟ و نقطه z موس دقیقا کجا میشه ؟ :متفکر:

jaykob
دوشنبه 05 تیر 1396, 19:34 عصر
منظور از فنس چیه ؟ و نقطه z موس دقیقا کجا میشه ؟ :متفکر:

سلام

ببخشید این رو بر طبق عادت گفتم Z

منظورم از فنس مثلا یک circle یا یک مربع باشه ( فرم به ۴ بخش تقسیم بشه بدون اینکه کاربر چیزی ببینه )

بعد موس هم در کار نیست این x,y موقیت رو یک اهرم مثل موس هست که لیزری کار می کنه می ده که با SDK خودش مقدار رو من می تونم در فرم داشته باشم

اگر ساده بخوام توضیح بدم . من یک موقعیت X Y دارم که می خوام چک کنم ببینم این داخل کدوم از ۴ تا یا هر چند تا کادر من هست و مثلا یک پیام بده که الان این موقعیت داخل کادر چندم هست .

تشکر از شما

Mahmoud.Afrad
دوشنبه 05 تیر 1396, 20:47 عصر
میتونید Rectangle تعریف کنید و در رویداد move موس(یا هر ابزاری که دارید) از متد Contains استفاده کنید و موقعیت رو بهش پاس بدید.
یا اینکه میتونید از GraphicsPath برای ایجاد هر نوع محدوده ای استفاده کنید. برای تشخیص اینکه موقعیت نشانگر درون این محدوده هست یا نه از متد IsVisible استفاده کنید.

jaykob
چهارشنبه 07 تیر 1396, 06:21 صبح
میتونید Rectangle تعریف کنید و در رویداد move موس(یا هر ابزاری که دارید) از متد Contains استفاده کنید و موقعیت رو بهش پاس بدید.
یا اینکه میتونید از GraphicsPath برای ایجاد هر نوع محدوده ای استفاده کنید. برای تشخیص اینکه موقعیت نشانگر درون این محدوده هست یا نه از متد IsVisible استفاده کنید.

سلام

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

تشکر

336699
چهارشنبه 07 تیر 1396, 11:33 صبح
سلام

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

تشکر

سلام

نام دستگاه ؟

مثل موس با کابل usb به سیستم وصل میشه؟

مختصاتی که دستگاه ارسال میکنه رو خواندید ؟

jaykob
چهارشنبه 07 تیر 1396, 12:22 عصر
سلام

نام دستگاه ؟

مثل موس با کابل usb به سیستم وصل میشه؟

مختصاتی که دستگاه ارسال میکنه رو خواندید ؟

سلام

دستگاه به صورت دستی درست شده که کار یکی از دوستان است

بله با usb وصل می شه و توسط SDK که خودشون دادن مختصات نقطه ای که دسته در آنجا قرار دارد را می توان در هر لحظه داشت

تشکر

Mahmoud.Afrad
چهارشنبه 07 تیر 1396, 16:15 عصر
سلام

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

تشکر

مهم نیست نشانگر باشه یا نباشه. وقتی مختصات رو دارید به راحتی میتونید تشخیص بدید در محدوده هست یا نه
Rectangle.Contains(Int32, Int32) (https://msdn.microsoft.com/en-us/library/k80hycef%28v=vs.110%29.aspx)
Rectangle.Contains(Point) (https://msdn.microsoft.com/en-us/library/22t27w02%28v=vs.110%29.aspx)

GraphicsPath.IsVisible(Int32, Int32) (https://msdn.microsoft.com/en-us/library/2t0h7f00%28v=vs.110%29.aspx)
GraphicsPath.IsVisible(Point) (https://msdn.microsoft.com/en-us/library/d20k495d%28v=vs.110%29.aspx)

برای تشخیص تغییر مختصات حتما رویدادی در SDK باید باشه. اگر نیست باید خودتون یک رویداد بنویسید که با تغییر موقعیت مکانی رخ بده.