我想实现一个元素慢慢淡出视野消失(确切说是删除掉了)的应用,刚好msdn上有这个例子
http://msdn.microsoft.com/zh-cn/library/ms752312.aspx#storyboardwalkthrough但是这个例子是用动画实现的,他的原理是利用透明度的变化,元素逐渐消失,但是我有个疑问就是这个元素只是变的透明了而已,还是彻底的删除掉了?我想要的是删除掉的结果,如果只是变的透明的话,那我画布上元素的个数变的多了起来,岂不是占用资源会过大了?如果我只是想以淡入淡出的方式删除画布上的某个矩形元素的话,该怎么办?即
canvas.Children.Add(rect)//添加3个矩形
有具体删除第二个矩形的方法嘛?

解决方案 »

  1.   

    你在动画结束后再删除掉就好了。Storyboard.Completed += new EventHandler(Storyboard_Completed); void Storyboard_Completed(object sender, EventArgs e)
     {
          你的操作;
      }
      

  2.   

    不行的,全透明,哪怕透明度是0,一样可以被操作到的,可以在 代码里加上一句,如果透明度变成0了,就设置该控件不显示。
           this.button1.Visibility = System.Windows.Visibility.Hidden;
      

  3.   


    问题是如何删除呢?
    Canvas.Children.Add(rect)//开始动画
    //结束动画画布可以精确定位到删除那个元素嘛?
      

  4.   

    我就是不知道如何删除,我是先把元素添加到Canvas画布里,动画结束后如何删除该元素啊嘛?
      

  5.   

    我就是不知道如何删除,我是先把元素添加到Canvas画布里,动画结束后如何删除该元素啊嘛?
    你要是知道index直接:void Storyboard_Completed(object sender, EventArgs e)
     {
          Canvas.RemoveAt(index);
      }要么这样Canvas.Children.Add(rect)
    //开始动画
    //结束动画
    Storyboard.Completed += (o,e) => 
    {
       Canvas.Children.Remove(rect);
    }