2017-08-02 49 views
-6

我最近開始學習WPF,遇到一個小問題。我試圖創建一個基本的按鈕形狀(透明),以適應我在Photoshop中創建的風格。WPF異形按鈕 - Visaul Studio/Blend

這裏是形狀(它像一個每邊都有三角形的盒子)。 http://prntscr.com/g3esel

如果它更容易在Blend中實現它並將其實現爲可視化,那麼Id愛知道如何。

按鈕樣式:

 <Style x:Key="Clicky" TargetType="Button"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
        <StackPanel Orientation="Horizontal"> 
         <Grid Height="74" Width="284" Background="{TemplateBinding Background}"/> 
         <TextBlock Text="{TemplateBinding Content}" TextAlignment="Center" VerticalAlignment="Center"/> 
        </StackPanel> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="Cursor" Value="Hand" /> 
       <Setter Property="Button.Opacity" Value="10" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

謝謝!

+0

我推薦在混合中使用它。但在我們走得更遠之前,我們不知道你的問題真的是什麼。如果你有任何代碼相關的東西麻煩。然後請離開。但不要指望我們做你的工作。 –

+0

謝謝你的迴應。我不知道如何使用混合,所以這是另一個問題... –

+0

Blend非常容易使用,但你可以在Visual Studio中做同樣的事情。這是真正的偏好。看起來你很幸運,有人給你一個關於如何做你的事情的例子。不過,我會先嚐試學習更多的語言,並親自嘗試這些東西。我們很樂意提供幫助,但我們也希望您能做足夠多的研究。社區懲罰相當困難的問題。 –

回答

0

您需要爲Button創建一個ControlTemplate。這可以在Blend和Visual Studio中完成。我在VS2015中做到了。 以下是您的代碼:

但是,未來,請在發佈問題之前嘗試執行some work yourself。只包含足夠的代碼以允許其他人重現該問題。有關此方面的幫助,請閱讀如何創建Minimal, Complete, and Verifiable example

<Grid Background="Red"> 
    <Button Height="52" Opacity="0.8"> 
     <Button.Style> 
      <Style TargetType="Button"> 
       <Setter Property="Background"> 
        <Setter.Value> 
         <LinearGradientBrush StartPoint="0,0" EndPoint="0,1" > 
          <GradientStop Color="#053755" Offset="0" /> 
          <GradientStop Color="#053755" Offset="0.5" /> 
          <GradientStop Color="#061F31" Offset="0.5" /> 
          <GradientStop Color="#061F31" Offset="1.0" /> 
         </LinearGradientBrush> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="Button"> 
          <Grid> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="Auto"/> 
            <ColumnDefinition Width="*"/> 
            <ColumnDefinition Width="Auto"/> 
           </Grid.ColumnDefinitions> 
           <Border Margin="-1,0" Grid.Column="1" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,1"> 
            <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Content="{TemplateBinding Content}"/> 
           </Border> 
           <Path Fill="{TemplateBinding Background}" Data="M13,0 0,25 0,27 13,52 13,52" Stroke="{TemplateBinding BorderBrush}" Width="13" Stretch="Fill" ClipToBounds="True"/> 
           <Path Grid.Column="2" Data="M0,0 13,25 13,27 0,52" Stroke="{TemplateBinding BorderBrush}" Fill="{TemplateBinding Background}" Width="13" Stretch="Fill" ClipToBounds="True"/> 
          </Grid> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </Button.Style> 
    </Button> 
</Grid> 
+0

謝謝你的幫助。我在發佈之前做了一些調查,但沒有找到有用的東西。 –

+0

關於按鈕,我已經創建了一個簡單的寺廟,它會改變光標,當鼠標移動它並改變不透明度。出於某種原因,不透明度不起作用...(在帖子中添加了代碼) –

+0

最大不透明度值爲1.此外,如果您需要使用觸發器更改任何屬性,則需要避免在按鈕本地值中設置此屬性(此鏈接解釋了原因 - https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/dependency-property-value-precedence)。刪除本地不透明度值(不透明度=「0.8」),並將該設置器添加到樣式中() – Yevgeniy