使图像褪色-C#WPF

使图像褪色-C#WPF,c#,wpf,image,fade,C#,Wpf,Image,Fade,我不太明白为什么它如此复杂,因为在标准的windows窗体中,下面的代码工作得很好。但无论如何 我正在尝试淡入一个图像,然后淡出它。现在我甚至不能让它消失,我觉得自己很傻,因为我确信我做错了什么。for循环起作用,但图像不透明度直到达到99时才改变,然后突然改变。请帮帮我,因为这快把我逼疯了 namespace WpfApplication2 { /// <summary> /// Interaction logic for MainWindow.xaml ///

我不太明白为什么它如此复杂,因为在标准的windows窗体中,下面的代码工作得很好。但无论如何

我正在尝试淡入一个图像,然后淡出它。现在我甚至不能让它消失,我觉得自己很傻,因为我确信我做错了什么。for循环起作用,但图像不透明度直到达到99时才改变,然后突然改变。请帮帮我,因为这快把我逼疯了

namespace WpfApplication2
{
   /// <summary>
   /// Interaction logic for MainWindow.xaml
   /// </summary>
   public partial class MainWindow : Window
   {
      public MainWindow()
      {
            InitializeComponent();
      }

      private void dispatcherTimer_Tick(object sender, EventArgs e)
      {
         for (int i = 1; i <+ 100; i++)
         {
            Logo.Opacity = i;
            label1.Content = i;                       
         }
      }

      private void Button_Click(object sender, RoutedEventArgs e)
      {
         System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
         dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
         dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 10);
         dispatcherTimer.Start();
      }
   }
}
命名空间WpfApplication2
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
}
私有void Dispatcher_Tick(对象发送方,事件参数e)
{

对于(inti=1;i不透明度是
double
,范围为0.0-1.0。因此循环应该是这样的

for (double i = 0.0; i <= 1.0; i+=0.01)
{
    Logo.Opacity = i;
    label1.Content = i;
}

for(double i=0.0;i我不知道您想要得到什么行为,但在WPF中您应该使用动画。可能您必须调整参数:

private void Button_Click(object sender, RoutedEventArgs e)
{
    DoubleAnimation da = new DoubleAnimation
    {
        From = 0,
        To = 1,
        Duration = new Duration(TimeSpan.FromSeconds(1)),
        AutoReverse = true
    };
    Logo.BeginAnimation(OpacityProperty, da);
}

最好对不透明度属性使用DoubleAnimation。如果我说我知道那是什么,那我就是个骗子。我会研究它。这仍然会阻塞UI线程,因此除了不透明度最终为1.0之外,不会有任何视觉效果。@Clemens对,我太关注不透明度范围了,完全忽略了另一个问题,brbDoubleAnimation不是t显示为有效。我需要添加额外的using语句吗?
使用System.Windows.Media.Animation;
干杯:)这非常有效。所有可用参数都有MS参考吗?我非常希望它淡入,停留一会儿,然后继续:)有大量的文档。查看和所有的子章节。但是一个快速的解决方法是:将
设置为
-参数设置为3,并增加
持续时间
。当动画将无效值设置为大于1时,实际值将保持为1。@BillyKindell你不应该一个接一个地问问题n此处有评论。请花时间阅读MSDN和其他有关动画的在线文档(有很多)。阅读一本关于WPF的书也可能会有所帮助,例如Adam Nathan发布的WPF。是的,有一个
已完成的
事件,您可以在动画完成时使用它执行操作。
private void Button_Click(object sender, RoutedEventArgs e)
{
    DoubleAnimation da = new DoubleAnimation
    {
        From = 0,
        To = 1,
        Duration = new Duration(TimeSpan.FromSeconds(1)),
        AutoReverse = true
    };
    Logo.BeginAnimation(OpacityProperty, da);
}