考虑一个窗口,其上带有多种颜色的控件。当一些触发器发生在窗体中时,我想在这个面板上放置一个面板,使得除了刚弹出的面板之外的所有控件都松开其颜色(一切以灰色显示)。有人可以帮助我吗?将背景变为wpf中的灰度
1
A
回答
4
我会使用您希望灰度的任何客户区域的效果属性。但是,您需要创建自己的像素着色器来进行灰度转换。
http://windowsclient.net/wpf/wpf35/wpf-35sp1-more-effects.aspx
你可以迅速通过使用BlurEffect类,而不是一个自定义着色器测试你的概念。
<Window x:Class="WpfGrayscaleSample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="327" Width="526">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="239*" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
<Canvas Name="clientArea" Background="Transparent" Grid.Row="0">
<!-- Just some controls -->
<Button Height="31" Name="button1" Width="80" Canvas.Left="30" Canvas.Top="125">Button</Button>
<Button Height="28" Name="button2" VerticalAlignment="Bottom" Click="button2_Click" HorizontalAlignment="Right" Width="75" Margin="0,0,16,34" Canvas.Left="66" Canvas.Top="54">Button</Button>
<Rectangle Margin="86,43,0,0" Name="rectangle1" Stroke="Black" Fill="Crimson" Height="59" HorizontalAlignment="Left" VerticalAlignment="Top" Width="109" Canvas.Left="145" Canvas.Top="44" />
</Canvas>
<!-- Button to activate the shader effect -->
<Button Height="23" Margin="15,0,0,21" Name="button3" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="75" Grid.Row="1" Click="button3_Click">Button</Button>
</Grid>
而对于BUTTON3事件处理程序,简直是
private void button3_Click(object sender, RoutedEventArgs e)
{
clientArea.Effect = new BlurEffect() { Radius = 10.0 };
}
当然是多做一些工作挂钩的灰色缩放自定义着色器,但额外的奖励的像素着色器将成为性能。
1
在您的顶级容器(网格等)中,只需在较低的ZIndex中创建一个Rectangle(或创建一个更多层次的嵌套)。
当您弹出面板时,交换矩形的ZIndex以适合您的控件和面板。
就灰度而言,可能有一些漂亮的方法可以用VisualBrush来完成,但我认为在矩形上可以使用半透明的SolidColorBrush。
+0
非常感谢,您的解决方案似乎是一个很好的破解 – sudarsanyes 2010-03-11 03:54:29
相关问题
- 1. 灰度背景Css图像
- 2. 背景图像灰度
- 3. 将图像的高度和宽度设置为WPF背景
- 4. 将背景图像转换为灰度 - 在飞行
- 5. 如何将CSS转换为灰度背景图像?
- 6. 背景灰
- 7. WPF Datagrid.RowStyle渐变背景
- 8. wpf按钮背景变化
- 9. 如何在Android中显示片段并将背景变灰?
- 10. Android - 黑色背景变成灰色
- 11. 使用ActionButton时背景屏幕变灰
- 12. 透明背景在WPF中变黑
- 13. 将模态视图放在视图上并将背景变为灰色
- 14. Powershell WPF将文本框背景变为图像
- 15. UIButton将他的背景颜色从白色变为灰色一段时间
- 16. 背景图片中的灰色块
- 17. 是否可以将Xorg的背景恢复为灰色网格?
- 18. 将禁用的列表框背景更改为灰色
- 19. AddIn灰色背景窗口
- 20. 灰色背景右侧
- 21. 灰色背景在Firefox
- 22. WPF中的模糊背景
- 23. 如何将选择背景颜色限制为WPF ListView中的项目宽度?
- 24. WPF DataGrid背景
- 25. WPF TreeViewItem背景
- 26. 将进度条下载为LinearLayout背景
- 27. 在图像中结合了背景混合模式和灰度
- 28. WPF RenderTargetBitmap缩减TextRenderMode为灰度
- 29. 将进度条添加到WPF控件的背景
- 30. 插入符消失时,文本框的背景为灰色在WPF
这就是我一直在寻找。你的模糊效果以及micahtan改变zorder的想法是值得考虑的。非常感谢 – sudarsanyes 2010-03-11 03:53:37