清爽的画布

时间:2015-10-25 19:29:10

标签: c# wpf canvas

我有一个关于刷新画布的问题。 WinForms中有.Refresh()或.Clear()。但是WPF呢?

我看了一些方法怎么做,但它根本没有帮助我。

情况是我的画布包含textBox和Button。当我点击按钮时,我可以绘制一些椭圆。

我需要在每次点击按钮后清除这些省略号但是 而不清除此画布中的textBox和Button

我的WPF Xaml:

    <Window x:Class="draw.CreateEllipse"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Create" Height="768" Width="1024" WindowStartupLocation="CenterScreen" Name="Create" Closed="Create_Closed">
<Canvas Name="can" Background="White" MouseDown="can_MouseDown">
    <TextBox Name="txbNumber" Height="34" Canvas.Left="797" TextWrapping="Wrap" Text="5" Canvas.Top="76" Width="209" FontSize="18"/>
    <Button Name="btnCreate" Content="Create" Canvas.Left="797" Canvas.Top="130" Width="209" Height="66" FontSize="18" Click="btnCreate_Click"/>
</Canvas>

我的C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace draw
{
/// <summary>
/// Логика взаимодействия для CreateGraph.xaml
/// </summary>
public partial class Create : Window
{
    public Create()
    {
        InitializeComponent();
    }
    int n, i;
    Ellipse[] v;
    Rectangle rect = new Rectangle();
    SolidColorBrush solidcolor = new SolidColorBrush();
    private void btnCreate_Click(object sender, RoutedEventArgs e)
    {
        n = Convert.ToInt16(txbNumber.Text);
        v = new Ellipse[n];

        //can.Children.Clear();
    }


    private void Create_Closed(object sender, EventArgs e)
    {
        Application.Current.Shutdown();
    }
    private void can_MouseDown(object sender, MouseButtonEventArgs e)
    {
        solidcolor.Color = Colors.Transparent;


        //Ellipse myEllipse = new Ellipse();
        SolidColorBrush mySolidColorBrush = new SolidColorBrush();

        for (i = 0; i < n; i++)
        {
            v[i] = new Ellipse();
            mySolidColorBrush.Color = Colors.Transparent;
            v[i].Fill = mySolidColorBrush;
            v[i].StrokeThickness = 2;
            v[i].Stroke = Brushes.Black;

            v[i].Width = 75;
            v[i].Height = 75;

            v[i].Margin = new Thickness(e.GetPosition(can).X, e.GetPosition(can).Y, 0, 0);
            can.Children.Add(v[i]);
        }
        if (n <= 0)
            return;
        n--;
    }
}

}

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码分隔您的元素:

var can2 = can.Children.OfType<Ellipse>();

上面的代码选择Canvas“can”中的所有省略号。 你可以从你的画布中删除它们像这样:

foreach (var element in can2)
{
    can.Children.Remove(element);
}

现在你的画布中没有椭圆。

希望这会对你有所帮助。