我正在尝试创建一个看起来像Visual Studio 2012的应用程序。我使用WindowChrome删除了窗口边框,并更改了我的xaml中的边框颜色。
我不知道怎么做是画出窗户的阴影,在这里你可以看到我所说的截图:
如你所见,有一个阴影,它的颜色也是边框颜色
您知道如何使用WPF实现它吗?
答案 0 :(得分:3)
这称为“Metro风格”(Windows 8风格)。我认为this Code Project文章对你很有意思,它会对你有帮助。
您可以尝试使用MIT许可证授权的Elysium,其中包括ApplicationBar和ToastNotification类,或者来自codeplext的MetroToolKit。
This是关于极乐世界的精彩教程,我认为它可以帮助你。
对于影子,只需在{XAML中的BitmapEffect
中向Border
添加Grid
:
<Grid>
<Border BorderBrush="#FF006900" BorderThickness="3" Height="157" HorizontalAlignment="Left" Margin="12,12,0,0" Name="border1" VerticalAlignment="Top" Width="479" Background="#FFCEFFE1" CornerRadius="20, 20, 20, 20">
<Border.BitmapEffect>
<DropShadowBitmapEffect Color="Black" Direction="320" ShadowDepth="10" Opacity="0.5" Softness="5" />
</Border.BitmapEffect>
<TextBlock Height="179" Name="textBlock1" Text="Hello, this is a beautiful DropShadow WPF Window Example." FontSize="40" TextWrapping="Wrap" TextAlignment="Center" Foreground="#FF245829" />
</Border>
</Grid>
答案 1 :(得分:3)
您可以使用这个简单的xaml代码
<Window x:Class="VS2012.MainWindow"
xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
Title="MainWindow"
Height="100" Width="200"
AllowsTransparency="True" WindowStyle="None" Background="Transparent">
<Border BorderBrush="DarkOrange" BorderThickness="1" Background="White" Margin="5">
<Border.Effect>
<DropShadowEffect ShadowDepth="0" BlurRadius="5" Color="DarkOrange"/>
</Border.Effect>
</Border>
</Window>
答案 2 :(得分:1)
我正在尝试获得相同的效果,我的应用程序正在使用.NET 4,因此我无法直接使用WindowChrome
(所以,我使用Microsoft Windows Shell库来获得相同的效果)
在这个thread中,正确地注意到使用spy ++可以看出Visual Studio有四个名为 VisualStudioGlowWindow 的窗口来实现发光效果。
在许多地方已经描述了AllowsTransparency
属性为true会如何降低性能。
所以,我试图采用VS方式,结果并不差(至少对我而言);不需要在主窗口上使用模糊或类似效果,我只需要对某些窗口状态(焦点/可见/隐藏)进行一些打击。
我已将所有必需的内容放在github上 - 希望这可以提供帮助。
答案 3 :(得分:1)
<Window x:Class="MyProject.MiniWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MyProject"
mc:Ignorable="d"
WindowStyle="None"
Title="MiniWindow" Background="Transparent"
Height="200" Width="200"
>
<WindowChrome.WindowChrome>
<WindowChrome
CaptionHeight="0"
ResizeBorderThickness="4" />
</WindowChrome.WindowChrome>
<Grid Margin="0">
<Border BorderThickness="3">
<Border BorderThickness="1" Margin="0" BorderBrush="#ff007acc">
<Border.Effect>
<DropShadowEffect Color="#ff007acc" Direction="132" ShadowDepth="0" BlurRadius="8" />
</Border.Effect>
<Grid Background="#ff2d2d30">
</Grid>
</Border>
</Border>
</Grid>