c# - vacio - Eliminar todas las imágenes añadidas al lienzo.
limpiar picturebox visual (2)
¿Quieres decir que solo quieres eliminar todos los elementos secundarios?
canvas.Children.Clear();
Parece que debería hacer el trabajo.
EDITAR: Si solo desea eliminar los elementos de la Image
, puede utilizar:
var images = canvas.Children.OfType<Image>().ToList();
foreach (var image in images)
{
canvas.Children.Remove(image);
}
Sin embargo, esto supone que todas las imágenes son elementos secundarios directos ; si desea eliminar los elementos de Image
otros elementos, se vuelve más complicado.
¿Existe una forma posible de eliminar (eliminar) todas las imágenes (niños) agregadas a un Canvas
en C # (en WFP)?
Dado que la colección secundaria de un Canvas es una colección UIElement y hay muchos otros controles que utilizan este tipo de colección, podríamos agregar el método de eliminación a todos ellos con un método de extensión.
public static class CanvasExtensions
{
/// <summary>
/// Removes all instances of a type of object from the children collection.
/// </summary>
/// <typeparam name="T">The type of object you want to remove.</typeparam>
/// <param name="targetCollection">A reference to the canvas you want items removed from.</param>
public static void Remove<T>(this UIElementCollection targetCollection)
{
// This will loop to the end of the children collection.
int index = 0;
// Loop over every element in the children collection.
while (index < targetCollection.Count)
{
// Remove the item if it''s of type T
if (targetCollection[index] is T)
targetCollection.RemoveAt(index);
else
index++;
}
}
}
Cuando esta clase está presente, simplemente puede eliminar todas las imágenes (o cualquier otro tipo de objeto) con la línea.
testCanvas.Children.Remove<Image>();