2012-09-28 6 views
10

Próbuję utworzyć przycisk google w pliku wpf. Znalazłem poniższy link, który określa przycisk css styl Google zaJak utworzyć efekt cienia przy przycisku wpf, np. W guziku google

Google button css style

Teraz mam również wyszukiwane w sieci i okazało się ten styl podobny przycisk Google'a

<Style x:Key="GoogleGreyButton" TargetType="{x:Type Button}"> 
    <Setter Property="Background" Value="#FFF5F5F5"/> 
    <Setter Property="BorderBrush" Value="#FFDCDCDC"/> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="Foreground" Value="#FF666666"/> 
    <Setter Property="FontWeight" Value="Bold"/> 
    <Setter Property="FontSize" Value="11"/> 
    <Setter Property="FontFamily" Value="Arial"/> 
    <Setter Property="HorizontalContentAlignment" Value="Center"/> 
    <Setter Property="VerticalContentAlignment" Value="Center"/> 
    <Setter Property="Padding" Value="8,7"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Button"> 
       <Border Name="border" 
        BorderThickness="{TemplateBinding BorderThickness}" 
        Padding="{TemplateBinding Padding}" 
        BorderBrush="{TemplateBinding BorderBrush}" 
        CornerRadius="1" 
        Background="{TemplateBinding Background}"> 
        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
            VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 

       </Border> 

       <ControlTemplate.Triggers> 
        <!--TODO: Set the right colors--> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter TargetName="border" Property="BorderBrush" Value="#FFC6C6C4" /> 
         <Setter Property="Foreground" Value="#FF020202" /> 
        </Trigger> 
        <Trigger Property="IsPressed" Value="True"> 
         ` <!--Some setters here--> ` 

        </Trigger> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Foreground" Value="#ADADAD"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

<Trigger Property="IsPressed" Value="True"> część I potrzeba aby uzyskać efekt spadku cienia, jak w powyższym Google button css style, czy mogę wiedzieć, jak mogę to osiągnąć?

+0

Należy rozważyć użycie mieszankę ekspresji, aby utworzyć wpf UI. dobrze spełnia twoje potrzeby. – Yohannes

Odpowiedz

17

Możesz wygenerować efekt cienia rzucanego przez cień, zmieniając trochę Obramowanie. Spróbuj czegoś takiego:

<Trigger Property="IsMouseOver" Value="True"> 
    <Setter TargetName="border" Property="BorderBrush" Value="DarkGray" /> 
    <Setter Property="Foreground" Value="Black" /> 
    <Setter Property="BorderThickness" Value="1,1,2,2" /> 
</Trigger> 

Zauważ, że robi to w ten sposób można zepsuć twój układ nieco, ponieważ zmienia całkowitą szerokość i wysokość swojego przycisku, więc inne kontrole wokół niego może „podbić around” po prostu odrobinę po najechaniu na przycisk.

Jeśli chcesz się bawić z właściwego cienia, można dodać cień do przycisku tak:

<Button> 
    <Button.BitmapEffect> 
     <DropShadowBitmapEffect Color="Black" Direction="320" Softness="1" ShadowDepth="10" Opacity="0.5" /> 
    </Button.BitmapEffect> 
</Button> 

EDIT:

Jak skomentował MrDosu, BitMapEffect jest przestarzała, więc prawdopodobnie powinien użyć zamiast tego Effect.

Oto przykład przy użyciu efektu:

<Trigger Property="IsMouseOver" Value="True"> 
    <Setter TargetName="border" Property="BorderBrush" Value="DarkGray" /> 
    <Setter Property="Foreground" Value="Black" /> 
    <Setter Property="Button.Effect"> 
     <Setter.Value> 
      <DropShadowEffect Color="Black" Direction="320" ShadowDepth="3" BlurRadius="5" Opacity="0.5" /> 
     </Setter.Value> 
    </Setter> 
</Trigger> 
+5

W .NET Framework 4 lub nowszym klasa BitmapEffect jest przestarzała. Jeśli spróbujesz użyć klasy BitmapEffect, otrzymasz przestarzały wyjątek. Nieaktualną alternatywą dla klasy BitmapEffect jest klasa Effect. W większości przypadków klasa Efekt jest znacznie szybsza. – MrDosu

+0

jeszcze jedno pytanie, jaka jest właściwość Trigger dla lewego przycisku myszy po kliknięciu przycisku? Chciałbym, aby przycisk powrócił do stanu "IsEnabled" po kliknięciu. – tesla1060

+0

bardzo piękna :) niesamowita –

Powiązane problemy