2013-07-08 2 views
1

В .NET 3.5 Я использовал OuterGlowBitmapEffect для события MouseOver, и он отлично работал.Button Styling OuterGlowBitmapEffect -> DropShadowEffect

Теперь я перехожу к .NET 4.0 и не работает - устарел, поэтому я переписал свой код DropShadowEffect.

Это работает, но между мышкой и началом анимации существует большая задержка - около 500 мс. Кто-нибудь знает, почему, пожалуйста? Или что я делаю неправильно?

Стиль:

<Style x:Key="Button" TargetType="{x:Type Button}"> 
<Style.Setters> 
    <Setter Property="Effect"> 
     <Setter.Value> 
      <DropShadowEffect ShadowDepth="0" Color="Yellow" BlurRadius="800" RenderingBias="Performance" Opacity="0" /> 
     </Setter.Value> 
    </Setter> 
</Style.Setters> 
<Style.Triggers> 
    <Trigger Property="Button.IsMouseOver" Value="True"> 
     <Trigger.EnterActions> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation Storyboard.TargetProperty="Effect.Opacity" From="0" To="1" By="1" BeginTime="0:0:0" Duration="0:0:0" /> 
        <DoubleAnimation Storyboard.TargetProperty="Effect.Opacity" From="1" To="0" By="1" BeginTime="0:0:1" Duration="0:0:0" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </Trigger.EnterActions> 
    </Trigger> 
</Style.Triggers> 

И кнопка:

<Button Content="B1" Canvas.Left="207" Canvas.Top="321" Height="70" Name="btn1" Style="{StaticResource Button}" Width="380" /> 
+0

Вы используете «AllowsTransparency = True» в своем окне? –

+0

Да, но это не влияет ... – Commanche

+0

Вы имеете в виду, что вы пытались установить его на false, но это не ускорило работу? это известная проблема. –

ответ

1

Вы можете использовать свойство BlurRadius в анимации, вместо непрозрачности. Также вы можете использовать AutoReverse свойство, чтобы вернуться в исходное состояние:

<DropShadowEffect ShadowDepth="0" Color="Yellow" 
BlurRadius="0" RenderingBias="Performance"/> 

и анимация:

<DoubleAnimation Storyboard.TargetProperty="Effect.BlurRadius" 
From="0" To="100" Duration="0:0:0.2" AutoReverse="True"/> 

И вы должны получить такой же эффект, который начинается без каких-либо задержек.

+0

Спасибо, это намного лучше, на одной кнопке отлично, когда несколько кнопок слишком медленны ... Проблема была в другом месте, значение of Effect.BlurRadius не должен превышать 100! – Commanche

+0

Там вы, рад, что я мог бы помочь. –