如何在WPF中从画布子中获取行
本文关键字:获取 WPF | 更新日期: 2023-09-27 17:49:40
我正试图删除我在画布上绘制的一些线,我的想法是使用Canvas.Children
的线控件的坐标。
我的初始代码是这样的:
var ax = Mouse.GetPosition(Canvas).X;
int mx1 = (int)ax - (eraserSize / 2);
int mx2 = (int)ax + (eraserSize / 2);
var ay = Mouse.GetPosition(Canvas).Y;
int my1 = (int)ay - (eraserSize / 2);
int my2 = (int)ay + (eraserSize / 2);
foreach(Line l in Canvas.Children)
{
if((l.X1 < mx1 && lX2 > mx2) && (l.Y1 < my1 && lY2 > my2))
{
Canvas.Children.Remove(l);
}
}
但是它当然不能工作,因为它不能将其他控件强制转换为Line。
我试着用if(l.Name == "LineName")
把这些在Line[]
或Control[]
,但没有工作,我不知道还有什么要尝试,然后只是画在它…
foreach(var child in Canvas.Children)
{
var l = child as Line;
if(l != null && (l.X1 < mx1 && lX2 > mx2) && (l.Y1 < my1 && lY2 > my2))
{
// You can't remove item from collection you enumerate thru
// Canvas.Children.Remove(l);
LinesToDelete.Add(l);
}
}
然后你可以简单地删除所有的行LinesToDelete