Вы можете либо математически разделить объект, используя положение мыши «относительно объекта», чтобы решить, где вы щелкнули, либо вы можете наложить несколько полигонов, каждый с цветным альфа-каналом, установленным на 1% (чтобы ониможет быть проверен на удар, но не виден).
Поскольку вы просто хотите увидеть, в какой четверти круга вы щелкнули, вызовите GetPosition для аргументов события LeftMouseButtonDown, передав элемент управлениясам как параметр.Это вернет вам объект Point с положением относительно верхнего левого угла элемента управления.
Тогда нужно просто определить, в какой четверти он находится:
private void ControlX_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
// Get the relative position of the element
Point point = e.GetPosition(sender as UIElement);
if (point.X > control.Width/2)
{
if (point.Y > control.Height/2)
{
// You are in the bottom right quarter
}
else
{
// You are in the top right quarter
}
}
else
{
if (point.Y > control.Height/2)
{
// You are in the bottom left quarter
}
else
{
// You are in the top left quarter
}
}
}
В примере кода, который вы мне прислали (в controlReletionshipsLine
), у вас есть:
// getting the relative position of the element
Point point = e.GetPosition(this);
Это должно было быть:
// getting the relative position of the element
Point point = e.GetPosition(sender as UIElement);