我在WPF中绘制SQUARE和其他形状。像那样,
private Rect DrawSquare(Rect bounds, InkCanvas canvas)
{
Rectangle recta = new Rectangle();
recta.Stroke = Brushes.Black;
//recta.Fill = Brushes.Blue;
recta.StrokeThickness = 4;
recta.Width = bounds.Width;
recta.Height = bounds.Height;
InkCanvas.SetLeft(recta, bounds.Left);
InkCanvas.SetRight(recta, bounds.Right);
InkCanvas.SetTop(recta, bounds.Top);
canvas.Children.Add(recta);
return bounds;
}
我可以用
删除随机行private void myInkCanvas_SelectionChanging(object sender, InkCanvasSelectionChangingEventArgs e)
{
else if (toolbarMode == ToolbarMode.Delete)
{
myInkCanvas.Strokes.Erase(e.GetSelectedStrokes().GetBounds()); //can delete random lines
ReadOnlyCollection<UIElement> elements = e.GetSelectedElements();
foreach (UIElement element in elements)
{
/*String ShapeName = ((System.Windows.Media.Visual)(element)).ToString();
if (ShapeName.Contains("Rectangle"))
{
Rectangle recta = (Rectangle)element;
recta.Fill = Brushes.Blue;
}*/
myInkCanvas.Children.Remove(element); //cant delete shapes!!?
}
}
}
我可以删除随机行,但我不能删除形状
我怎么能?
答案 0 :(得分:2)
您正在元素集合上使用foreach
循环并同时更改集合。这是不可能的。
你可以通过使用for循环解决这个问题(小心,循环的长度可能因元素的移除而改变)