获取特定坐标上的元素
本文关键字:元素 坐标 获取 | 更新日期: 2023-09-27 18:02:57
我在画布中有标签,我需要得到与坐标X,Y相交的标签?
谢谢! !
只需在画布上使用InputHitTest
,传递您想要的坐标作为参数。请注意,InputHitTest
可用于每个UIElement
,而不是特定于画布。
Canvas.GetLeft(element), Canvas.GetTop(element)将获取任何元素的位置。使用ActualWidth和ActualHeight来形成完整的矩形。你可以用foreach来遍历Canvas的子元素。
Edit: CodeNaked指出元素可以用SetRight或SetBottom设置,所以我修改了示例代码:
foreach (FrameworkElement nextElement in myCanvas.Children)
{
double left = Canvas.GetLeft(nextElement);
double top = Canvas.GetTop(nextElement);
double right = Canvas.GetRight(nextElement);
double bottom = Canvas.GetBottom(nextElement);
if (double.IsNaN(left))
{
if (double.IsNaN(right) == false)
left = right - nextElement.ActualWidth;
else
continue;
}
if (double.IsNaN(top))
{
if (double.IsNaN(bottom) == false)
top = bottom - nextElement.ActualHeight;
else
continue;
}
Rect eleRect = new Rect(left, top, nextElement.ActualWidth, nextElement.ActualHeight);
if (myXY.X >= eleRect.X && myXY.Y >= eleRect.Y && myXY.X <= eleRect.Right && myXY.Y <= eleRect.Bottom)
{
// Add to intersects list
}
}