Come posso creare una forma di angoli arrotondati in WPF?
-
19-08-2019 - |
Domanda
Sto cercando di arrotondare gli angoli di una finestra (WPF) e non funziona, ho cercato di rendere trasparente la finestra stessa e di aggiungere un bordo interno con angoli arrotondati e non funziona.
Qualche idea?
Soluzione
devi impostare WindowStyle su WindowStyle.None, che rimuoverà il chrome, quindi puoi consentire la trasparenza che è un attributo nell'elemento Window e impostare il colore di sfondo su trasparente. Tutto ciò può essere fatto come attributi del tag window.
WindowStyle="None"
AllowsTransparency="True"
Background="Transparent"
Per arrotondare gli angoli, usa un bordo e imposta la proprietà cornerRadius
Altri suggerimenti
Non utilizzare AllowsTransparency è lento e pieno di errori, dai un'occhiata a questo link, cerca la sezione "Office 2007 senza Aero & # 8211; Oppure, sei responsabile di tutto " ;:
https: // blogs.msdn.microsoft.com/wpfsdk/2008/09/08/custom-window-chrome-in-wpf/
EDIT: alcune delle tecniche in questo post sono specifiche di Vista, ma "Office 2007 senza Aero" sezione funziona su XP (e in realtà descrive a quale software scritto per Vista deve ricorrere su XP).
Devi anche creare un bordo trasparente attorno alla finestra largo alcuni pixel, altrimenti i bordi degli angoli arrotondati vengono tagliati
può aiutarti.
<Grid DataContext="{Binding ElementName=root}">
<Border Background="#90000000" Visibility="{Binding Visibility}">
<Border BorderBrush="Black" BorderThickness="1" Background="AliceBlue"
CornerRadius="10,0,10,0" VerticalAlignment="Center"
HorizontalAlignment="Center">
<Border.BitmapEffect>
<DropShadowBitmapEffect Color="Black"
Opacity="0.5" Direction="270"
ShadowDepth="0.7" />
</Border.BitmapEffect>
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock x:Name="MessageTextBlock"
Text="{Binding Message}"
TextWrapping="Wrap" Margin="5" />
<UniformGrid Grid.Row="1" Margin="5"
Columns="2" HorizontalAlignment="Center"
VerticalAlignment="Bottom">
<Button x:Name="OkButton"
Content="Ok" Margin="2" />
<Button x:Name="CancelButton"
Content="Cancel" Margin="2" />
</UniformGrid>
</Grid>
</Border>
</Border>
</Grid>