سلام
من می خوام برنامه ای بنویستم که سه کادر در فرم باشه و وقتی موس رو روی اون محدوده ببرم رنگ اون کادر عوض بشه البته نمی خوام با event ها باشه بلکه می خوام با مقایسه X , Y , Z باشه
ممنون می شم توضیحاتی رو بدید
سلام
من می خوام برنامه ای بنویستم که سه کادر در فرم باشه و وقتی موس رو روی اون محدوده ببرم رنگ اون کادر عوض بشه البته نمی خوام با event ها باشه بلکه می خوام با مقایسه X , Y , Z باشه
ممنون می شم توضیحاتی رو بدید
شما برای تشخیص بودن نشانگر موس نیاز به اون ایونت دارید حالا یه مدل اینجوریه که تو استک دیدم:
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;
}
}
سلام
ممنون از شما
دوستان کس دیگه ای نمی تونه توضیح مفصل تری بده برای من مهم اینه که یک فنس کشیده بشه و اگر نقطه x y z من در این محدوده بود به طور مثال یک پیام بده
تشکر
سلام
ببخشید این رو بر طبق عادت گفتم Z
منظورم از فنس مثلا یک circle یا یک مربع باشه ( فرم به ۴ بخش تقسیم بشه بدون اینکه کاربر چیزی ببینه )
بعد موس هم در کار نیست این x,y موقیت رو یک اهرم مثل موس هست که لیزری کار می کنه می ده که با SDK خودش مقدار رو من می تونم در فرم داشته باشم
اگر ساده بخوام توضیح بدم . من یک موقعیت X Y دارم که می خوام چک کنم ببینم این داخل کدوم از ۴ تا یا هر چند تا کادر من هست و مثلا یک پیام بده که الان این موقعیت داخل کادر چندم هست .
تشکر از شما
میتونید Rectangle تعریف کنید و در رویداد move موس(یا هر ابزاری که دارید) از متد Contains استفاده کنید و موقعیت رو بهش پاس بدید.
یا اینکه میتونید از GraphicsPath برای ایجاد هر نوع محدوده ای استفاده کنید. برای تشخیص اینکه موقعیت نشانگر درون این محدوده هست یا نه از متد IsVisible استفاده کنید.
سلام
تشکر از شما . ولی مشکل من این هست که موس وجود نداره و اون ابزار هم نشانگری روی صفحه ندارد ( یک ابزار دستی هست که دور مچ بسته می شود و با تکان خودرن دست موقعیت لحظه به لحظه رو ارسال می کنه ) مشکل من مقایسه مقادیری که این ایزار به عنوان موقعیت می دهد با ورود و خروج از این محدوده ها هستش
تشکر
مهم نیست نشانگر باشه یا نباشه. وقتی مختصات رو دارید به راحتی میتونید تشخیص بدید در محدوده هست یا نه
Rectangle.Contains(Int32, Int32)
Rectangle.Contains(Point)
GraphicsPath.IsVisible(Int32, Int32)
GraphicsPath.IsVisible(Point)
برای تشخیص تغییر مختصات حتما رویدادی در SDK باید باشه. اگر نیست باید خودتون یک رویداد بنویسید که با تغییر موقعیت مکانی رخ بده.