不知道如何创建透明模糊背景画布不模糊画布儿童太。这是我想要的结果-模糊背景,但不是内容:
w46czmvw1#
我的借口请原谅我对Stackoverflow缺乏经验,但我想我会尝试帮助你一点。我没有编写这段代码,但是看到这段代码对大多数人来说是不容易获得的,这里是:
using System; using System.Runtime.InteropServices; using System.Windows; using System.Windows.Interop; namespace BlurBehindDemo { internal enum AccentState { ACCENT_DISABLED = 1, ACCENT_ENABLE_GRADIENT = 0, ACCENT_ENABLE_TRANSPARENTGRADIENT = 2, ACCENT_ENABLE_BLURBEHIND = 3, ACCENT_INVALID_STATE = 4 } [StructLayout(LayoutKind.Sequential)] internal struct AccentPolicy { public AccentState AccentState; public int AccentFlags; public int GradientColor; public int AnimationId; } [StructLayout(LayoutKind.Sequential)] internal struct WindowCompositionAttributeData { public WindowCompositionAttribute Attribute; public IntPtr Data; public int SizeOfData; } internal enum WindowCompositionAttribute { // ... WCA_ACCENT_POLICY = 19 // ... } /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { [DllImport("user32.dll")] internal static extern int SetWindowCompositionAttribute(IntPtr hwnd, ref WindowCompositionAttributeData data); public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { EnableBlur(); } internal void EnableBlur() { var windowHelper = new WindowInteropHelper(this); var accent = new AccentPolicy(); accent.AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND; var accentStructSize = Marshal.SizeOf(accent); var accentPtr = Marshal.AllocHGlobal(accentStructSize); Marshal.StructureToPtr(accent, accentPtr, false); var data = new WindowCompositionAttributeData(); data.Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY; data.SizeOfData = accentStructSize; data.Data = accentPtr; SetWindowCompositionAttribute(windowHelper.Handle, ref data); Marshal.FreeHGlobal(accentPtr); } private void Window_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { DragMove(); } }
}
一旦实施,这将影响整个窗口,如图所示:
经过一点调整
这是我几个月前做的一个项目,所以它看起来和你的不一样,但是经过一些调整,你可以很容易地把它变成你想要的任何东西。我设计的XAML如下:
<Window 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" mc:Ignorable="d" x:Class="MainWindow" Title="Blurred Opacity" Height="623" Width="752" Background="#727A7A7A" AllowsTransparency="True" WindowStyle="None" BorderThickness="1" WindowStartupLocation="CenterScreen" Loaded="Window_Loaded" MouseLeftButtonDown="Window_MouseDown" Topmost="True" BorderBrush="#FF1E9EC5"> <Grid> <Rectangle Fill="#FF0143A4" Height="130" VerticalAlignment="Top"/> <Rectangle Fill="White" Margin="0,130,0,0" HorizontalAlignment="Right" Width="375"/> <StackPanel HorizontalAlignment="Left" Margin="0,130,0,0" Width="375"> <TextBlock x:Name="textBlock" Height="50" TextWrapping="Wrap" Text="Category 1" d:LayoutOverrides="LeftPosition, RightPosition" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6"/> <TextBlock x:Name="textBlock_Copy" Height="50" TextWrapping="Wrap" Text="Category 2" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" d:LayoutOverrides="LeftPosition, RightPosition"/> <TextBlock x:Name="textBlock_Copy1" Height="50" TextWrapping="Wrap" Text="Category 3" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" d:LayoutOverrides="LeftPosition, RightPosition"/> <TextBlock x:Name="textBlock_Copy2" Height="50" TextWrapping="Wrap" Text="Category 4" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" d:LayoutOverrides="LeftPosition, RightPosition"/> <TextBlock x:Name="textBlock_Copy3" Height="50" TextWrapping="Wrap" Text="Category 5" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" d:LayoutOverrides="LeftPosition, RightPosition"/> <TextBlock x:Name="textBlock_Copy4" Height="50" TextWrapping="Wrap" Text="Category 6" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" d:LayoutOverrides="LeftPosition, RightPosition"/> <TextBlock x:Name="textBlock_Copy5" Height="50" TextWrapping="Wrap" Text="Category 7" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" d:LayoutOverrides="LeftPosition, RightPosition"/> <TextBlock x:Name="textBlock_Copy6" Height="50" TextWrapping="Wrap" Text="Category 8" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" d:LayoutOverrides="LeftPosition, RightPosition"/> </StackPanel> <TextBlock x:Name="textBlock_Copy7" Height="90" TextWrapping="Wrap" Text="Example" FontSize="65" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" Margin="222.5,23,152.5,0" VerticalAlignment="Top" Foreground="White"/> <Path Data="M705,27.333333 L735.66667,10" Fill="White" HorizontalAlignment="Right" Height="24" Margin="0,7,21,0" Stretch="Fill" VerticalAlignment="Top" Width="24" StrokeThickness="3" Stroke="White"/> <Path Data="M705,27.333333 L735.66667,10" Fill="White" HorizontalAlignment="Right" Height="24.083" Margin="0,6.833,20.333,0" Stretch="Fill" VerticalAlignment="Top" Width="24.167" StrokeThickness="3" Stroke="White" RenderTransformOrigin="0.5,0.5"> <Path.RenderTransform> <TransformGroup> <ScaleTransform ScaleX="-1"/> <SkewTransform/> <RotateTransform/> <TranslateTransform/> </TransformGroup> </Path.RenderTransform> </Path> <StackPanel HorizontalAlignment="Right" Margin="0,130,0,0" Width="375"> <TextBlock x:Name="textBlock1" Height="50" TextWrapping="Wrap" Text="Item 1" d:LayoutOverrides="LeftPosition, RightPosition" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6"/> <TextBlock x:Name="textBlock_Copy8" Height="50" TextWrapping="Wrap" Text="Item 2" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" d:LayoutOverrides="LeftPosition, RightPosition"/> <TextBlock x:Name="textBlock_Copy9" Height="50" TextWrapping="Wrap" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" d:LayoutOverrides="LeftPosition, RightPosition"><Run Text="Item "/><Run Text="3"/><LineBreak/><Run Text="3"/></TextBlock> <TextBlock x:Name="textBlock_Copy10" Height="50" TextWrapping="Wrap" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" d:LayoutOverrides="LeftPosition, RightPosition"><Run Text="Item "/><Run Text="4"/></TextBlock> <TextBlock x:Name="textBlock_Copy11" Height="50" TextWrapping="Wrap" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" d:LayoutOverrides="LeftPosition, RightPosition"><Run Text="Item "/><Run Text="5"/></TextBlock> <TextBlock x:Name="textBlock_Copy12" Height="50" TextWrapping="Wrap" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" d:LayoutOverrides="LeftPosition, RightPosition"><Run Text="Item "/><Run Text="6"/></TextBlock> <TextBlock x:Name="textBlock_Copy13" Height="50" TextWrapping="Wrap" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" d:LayoutOverrides="LeftPosition, RightPosition"><Run Text="Item "/><Run Text="7"/></TextBlock> <TextBlock x:Name="textBlock_Copy14" Height="50" TextWrapping="Wrap" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" d:LayoutOverrides="LeftPosition, RightPosition"><Run Text="Item "/><Run Text="8"/></TextBlock> <TextBlock x:Name="textBlock_Copy15" Height="50" TextWrapping="Wrap" FontSize="35" Padding="10,0,0,0" TextOptions.TextFormattingMode="Display" LineHeight="6" d:LayoutOverrides="LeftPosition, RightPosition"><Run Text="Item "/><Run Text="9"/></TextBlock> </StackPanel> </Grid>
希望这对你有帮助!
yhived7q2#
您可以使用网格中的项目位于其他项目之上的事实:
<Grid > <Image Source="texture-7.jpg" Stretch="Fill" > <Image.Effect> <BlurEffect Radius="100"/> </Image.Effect> </Image> <Canvas Background="Transparent"> <!-- Content --> </Canvas> </Grid>
其中“texture-7.jpg”是纹理的某个图像。如果你还想让它透明,只需设置Image的opacity属性
bqucvtff3#
使用Windows10时,请查看BlurryControls。它提供了一个你可以直接继承的模糊窗口。对于Windows8没有解决方案模糊一个窗口(据我所知)。对于Windows7/Vista,一个名为Ciantic的用户提供了以下解决方案:Windows Aero Glass.工作样品溶液可在此处找到:GlassingExtension。我希望这能回答你的问题。如果您对针对Windows 10的解决方案有问题或建议,请回复。
nkhmeac64#
希望这有帮助
<Canvas Height="300" Width="300"> <Canvas.Background> <VisualBrush Stretch="None"> <VisualBrush.Visual> <Canvas Background="LightBlue" Height="300" Width="300"> <Canvas.Effect> <BlurEffect Radius="150"></BlurEffect> </Canvas.Effect> </Canvas> </VisualBrush.Visual> </VisualBrush> </Canvas.Background> <Rectangle Fill="Red" Height="50" Width="50"></Rectangle> <Rectangle Fill="Green" Margin="50" Height="50" Width="50"></Rectangle> </Canvas>
4条答案
按热度按时间w46czmvw1#
我的借口
请原谅我对Stackoverflow缺乏经验,但我想我会尝试帮助你一点。
我没有编写这段代码,但是看到这段代码对大多数人来说是不容易获得的,这里是:
}
结果
一旦实施,这将影响整个窗口,如图所示:
经过一点调整
XAML
这是我几个月前做的一个项目,所以它看起来和你的不一样,但是经过一些调整,你可以很容易地把它变成你想要的任何东西。我设计的XAML如下:
希望这对你有帮助!
yhived7q2#
您可以使用网格中的项目位于其他项目之上的事实:
其中“texture-7.jpg”是纹理的某个图像。如果你还想让它透明,只需设置Image的opacity属性
bqucvtff3#
使用Windows10时,请查看BlurryControls。它提供了一个你可以直接继承的模糊窗口。
对于Windows8没有解决方案模糊一个窗口(据我所知)。
对于Windows7/Vista,一个名为Ciantic的用户提供了以下解决方案:Windows Aero Glass.工作样品溶液可在此处找到:GlassingExtension。
我希望这能回答你的问题。如果您对针对Windows 10的解决方案有问题或建议,请回复。
nkhmeac64#
希望这有帮助