gpt4 book ai didi

WPF:在没有自定义镶边的无边框窗口上放置阴影

转载 作者:行者123 更新时间:2023-12-04 17:53:34 27 4
gpt4 key购买 nike

我正在用 WindowStyle=None 和 ResizeMode=NoResize 在 WPF-windows 上挣扎。在窗口内容上使用 DropShadow 效果有什么好的选择吗?我已经在 Shell 集成库中尝试过 WindowChrome,但是当 ResizeMode=NoResize 时它没有显示任何“Chrome”。

如果有可能以某种方式在我的窗口边框外绘制 wpf-drop-shadow ,它可能是一个解决方案。如果我在窗口内绘制阴影,例如在将鼠标光标移到阴影上时,我会得到与标准不同的行为。执行此操作时,我的窗口中不应进行 HitTest ,单击此区域应激活后面的窗口等。

Zune 似乎正在绘制自己的阴影,因为它看起来不像标准的 Chrome 阴影。但它的行为就像一个普通的阴影,它不捕获鼠标事件。我想知道他们是怎么做到的。

Spotify 还有另一种阴影,它也不会捕获鼠标事件。

我猜这些应用程序完全绘制了自己的 WindowChrome,但是如何绘制?这在 WPF 中以某种方式支持吗?

<Window x:Class="ShellIntegrationTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:shell="clr-namespace:Microsoft.Windows.Shell;assembly=Microsoft.Windows.Shell"
Title="MainWindow" Height="512" Width="384" WindowStyle="None" ResizeMode="NoResize">
<shell:WindowChrome.WindowChrome>
<shell:WindowChrome ResizeBorderThickness="5" GlassFrameThickness="-1" CornerRadius="0" CaptionHeight="25" />
</shell:WindowChrome.WindowChrome>
</Window>

最佳答案

如果窗口设置为不调整大小且样式为无,则此代码将在无边框窗口上显示阴影。

    xmlns:local="clr-namespace:BorderTest" 
mc:Ignorable="d" WindowStyle="None" ResizeMode="NoResize"
Title="MainWindow" Height="350" Width="525" AllowsTransparency="True" Background="Transparent">
<Border Margin="10" BorderThickness="1" BorderBrush="Blue">
<Border.Effect>
<DropShadowEffect Color="Black"
Direction="270"
BlurRadius="10"
ShadowDepth="3" />
</Border.Effect>
<Grid Background="White">

</Grid>
</Border>

关于WPF:在没有自定义镶边的无边框窗口上放置阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5966114/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com